{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./app/javascript/packs/public/application.js","webpack:///./app/javascript/public/config/http.js","webpack:///./app/javascript/public/features/carousel.js","webpack:///./app/javascript/public/features/contact.js","webpack:///./app/javascript/public/features/navbar.js","webpack:///./app/javascript/public/features/scrolling.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","angular","require","config","$httpProvider","defaults","paramSerializer","headers","common","element","document","querySelector","attr","CarouselController","$element","ctrl","this","slides","getElementsByClassName","currentIndex","showPrevious","index","length","showNext","controller","ContactController","$rootScope","$http","$timeout","now","Date","submit","subject","isFunction","cancelPopin","contact","comment","match","form","$setValidity","isObject","options","values","filter","elem","$invalid","post","then","completed","setContactSubject","input","parent","addClass","NavbarController","updateStickyNavbar","window","pageYOffset","removeClass","toggle","activeMenu","addEventListener","links","querySelectorAll","Array","forEach","a","anchor","getAttribute","href","slice","event","preventDefault","id","offset","target","getElementById","offsetTop","offsetParent","body","elementPosition","current","documentElement","scrollTop","distance","Math","abs","scrollTo","speed","round","step","leapY","timer","setTimeout","scrollToAnchor"],"mappings":"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","file":"js/public/application-952bf8cf7b643f420d8f.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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = 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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://solutions-territoire.fr/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1454);\n","/* eslint no-console:0 */\n// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n//\n// To reference this file, add <%= javascript_pack_tag 'application' %> to the appropriate\n// layout file, like app/views/layouts/application.html.erb\n\n// Uncomment to copy all static images under ../images to the output folder and reference\n// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>)\n// or the `imagePath` JavaScript helper below.\n//\n// const images = require.context('../images', true)\n// const imagePath = (name) => images(name, true)\n\nangular.module('public', [\n 'ngAria',\n 'ngSanitize'\n])\n\nrequire('public/config/http.js')\nrequire('public/features/carousel.js')\nrequire('public/features/contact.js')\nrequire('public/features/navbar.js')\nrequire('public/features/scrolling.js')\n","angular\n .module('public')\n .config(['$httpProvider', config])\n\nfunction config ($httpProvider) {\n $httpProvider.defaults.paramSerializer = '$httpParamSerializerJQLike'\n $httpProvider.defaults.headers.common['Accept'] = 'application/json'\n $httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'\n $httpProvider.defaults.headers.common['X-CSRF-Token'] = angular.element(document.querySelector('meta[name=csrf-token]')).attr('content')\n}\n","angular\n .module('public')\n .controller('CarouselController', CarouselController)\n\nCarouselController['$inject'] = ['$element']\nfunction CarouselController ($element) {\n const ctrl = this\n const slides = document.getElementsByClassName('slide')\n\n ctrl.currentIndex = 0\n ctrl.showPrevious = showPrevious\n ctrl.showNext = showNext\n\n function showPrevious () {\n let index = ctrl.currentIndex - 1\n if (index < 0) index = slides.length - 1\n\n ctrl.currentIndex = index\n }\n\n function showNext () {\n let index = ctrl.currentIndex + 1\n if (index >= slides.length) index = 0\n\n ctrl.currentIndex = index\n }\n}\n","angular\n .module('public')\n .controller('ContactController', ContactController)\n\nContactController['$inject'] = ['$rootScope', '$http', '$timeout']\nfunction ContactController ($rootScope, $http, $timeout) {\n const ctrl = this\n const now = new Date()\n ctrl.submit = submit\n\n $rootScope.setContactSubject = setContactSubject\n\n $timeout(function () {\n const input = document.querySelector('input[aria-label*=\"Ne pas remplir\"]')\n angular.element(input).attr('tabindex', '-1')\n\n const element = angular.element(input).parent()\n element.addClass('honey')\n })\n\n function submit (subject) {\n if (new Date() - now < 5000) return\n if (angular.isFunction($rootScope.cancelPopin)) $rootScope.cancelPopin()\n\n // To fight against bots,\n // we reject comments with only one word.\n if (ctrl.contact.comment && ctrl.contact.comment.match(/^\\s*[^\\s]+\\s*$/)) {\n ctrl.form.comment.$setValidity('words', false)\n } else if (ctrl.form.comment) {\n ctrl.form.comment.$setValidity('words', true)\n }\n\n if (angular.isObject(ctrl.contact.options)) {\n ctrl.contact.options = Object.values(ctrl.contact.options)\n ctrl.contact.options = ctrl.contact.options.filter(elem => { return elem !== false })\n }\n\n if (ctrl.form.$invalid) return\n $http.post('/contact', {\n subject: (subject || ctrl.subject),\n contact: ctrl.contact\n }).then(function () {\n ctrl.completed = true\n })\n }\n\n function setContactSubject (subject) {\n ctrl.subject = subject\n }\n}\n","angular\n .module('public')\n .controller('NavbarController', NavbarController)\n\nNavbarController['$inject'] = ['$element']\nfunction NavbarController ($element) {\n const ctrl = this\n\n ctrl.toggle = toggle\n\n updateStickyNavbar()\n window.addEventListener('scroll', updateStickyNavbar)\n\n function toggle (key) {\n if (ctrl.activeMenu === key) {\n ctrl.activeMenu = null\n } else {\n ctrl.activeMenu = key\n }\n }\n\n function updateStickyNavbar () {\n if (window.pageYOffset > 40) {\n $element.addClass('sticky')\n } else {\n $element.removeClass('sticky')\n }\n }\n}\n","const links = document.querySelectorAll('a[href^=\"#\"]')\n\nif (links && links.length) init()\n\nfunction init () {\n Array.prototype.forEach.call(links, function (a) {\n const anchor = (a.getAttribute('href') || a.href).slice(1)\n\n a.addEventListener('click', function (event) {\n event.preventDefault()\n const offset = (anchor === 'top') ? 122 : 57\n scrollToAnchor(anchor, 0 - offset)\n })\n })\n}\n\n// Functions\n// Inspired by https://jsfiddle.net/brettdewoody/y65G5/\n// ----------------------------------------------------------------------------\nfunction scrollToAnchor (id, offset) {\n const target = elementPosition(id) + (offset || 0)\n let current = currentPosition()\n let distance = Math.abs(target - current)\n\n if (distance < 100) {\n window.scrollTo(0, target)\n return\n }\n\n if (distance > 600) {\n current = (target > current) ? target - 600 : target + 600\n distance = 600\n window.scrollTo(0, current)\n }\n\n let speed = Math.round(distance / 100)\n if (speed >= 20) speed = 20\n\n const step = Math.round(distance / 25)\n let leapY = target > current ? current + step : current - step\n let timer = 0\n let i\n\n if (target > current) {\n for (i = current; i < target; i += step) {\n setTimeout(function () {\n window.scrollTo(0, leapY)\n }, timer * speed)\n leapY += step\n\n if (leapY > target) leapY = target\n timer++\n }\n return\n }\n\n for (i = current; i > target; i -= step) {\n setTimeout(function () {\n window.scrollTo(0, leapY)\n }, timer * speed)\n leapY -= step\n\n if (leapY < target) leapY = target\n timer++\n }\n}\n\nfunction currentPosition () {\n if (window.pageYOffset) {\n return window.pageYOffset\n } else {\n return document.documentElement.scrollTop\n }\n}\n\nfunction elementPosition (id) {\n let element = document.getElementById(id)\n let offset = element.offsetTop\n\n while (element.offsetParent && element.offsetParent !== document.body) {\n element = element.offsetParent\n offset += element.offsetTop\n }\n\n return offset\n}\n"],"sourceRoot":""}