{"version":3,"sources":["webpack://website/./node_modules/responsive-bp/src/js/responsive.core.js"],"names":["$","w","d","getDuration","supportTouch","supportPointer","pointerStart","pointerMove","pointerEnd","touchEnd","mouseEnd","getEvents","old","echanged","$d","pseudoUnique","length","len","text","possible","max","i","charAt","Math","floor","random","support","rtl","currentGrid","$div","addClass","prependTo","grids","key","parseInt","width","remove","grid","index","range","scrollbarWidth","body","clientWidth","innerWidth","offsetWidth","toggleBodyLock","bodyPad","$html","$body","undefined","attr","data","css","removeData","removeAttr","trigger","Event","scrollWidth","padding","transition","div","createElement","transEndEventNames","names","Object","keys","style","end","transitionEnd","fn","redraw","this","each","$element","rtransition","test","match","ensureTransitionEnd","duration","called","$this","one","setTimeout","onTransitionEnd","callback","supportTransition","isFunction","error","start","Date","args","arguments","getMilliseconds","apply","bind","touchEvents","DocumentTouch","pointerEvents","PointerEvent","MSPointerEvent","ns","estart","emove","eend","join","move","event","special","swipe","add","handler","$elem","namespace","etouch","touchAction","sensitivity","delta","onMove","moveEvent","isMouse","type","isPointer","original","originalEvent","which","touches","scale","doSwipe","dx","pageX","clientX","x","dy","pageY","clientY","y","percentX","abs","parseFloat","percentY","height","preventDefault","stopPropagation","isDefaultPrevented","onEnd","endEvent","time","horizontal","vertical","direction","off","on","target","is","startEvent","addSwipe","removeSwipe","extend","expr","attrStart","el","props","hasAttribute","attributes","name","indexOf","getDataOptions","filter","options","val","newKey","toLowerCase","substring","debounce","func","wait","immediate","timeout","context","clearTimeout","html","result","jQuery","window","document"],"mappings":"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","file":"499.js","sourcesContent":["/* ==|== Responsive =============================================================\r\n Author: James Jackson-South\r\n twitter : http://twitter.com/James_M_South\r\n github : https://github.com/ResponsiveBP/Responsive\r\n Copyright (c), James Jackson-South.\r\n Licensed under the MIT License.\r\n ============================================================================== */\r\n\r\n/*! Responsive v4.1.4 | MIT License | responsivebp.com */\r\n\r\n/*\r\n * Responsive Core\r\n */\r\n\r\n/*global jQuery*/\r\n/*jshint forin:false, expr:true*/\r\n(function ($, w, d) {\r\n\r\n \"use strict\";\r\n\r\n $.pseudoUnique = function (length) {\r\n /// Returns a pseudo unique alpha-numeric string of the given length.\r\n /// The length of the string to return. Defaults to 8.\r\n /// The pseudo unique alpha-numeric string.\r\n\r\n var len = length || 8,\r\n text = \"\",\r\n possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\",\r\n max = possible.length;\r\n\r\n if (len > max) {\r\n len = max;\r\n }\r\n\r\n for (var i = 0; i < len; i += 1) {\r\n text += possible.charAt(Math.floor(Math.random() * max));\r\n }\r\n\r\n return text;\r\n };\r\n\r\n $.support.rtl = (function () {\r\n /// Returns a value indicating whether the current page is setup for right-to-left languages.\r\n /// \r\n /// True if right-to-left language support is set up; otherwise false.\r\n ///\r\n\r\n return $(\"html[dir=rtl]\").length ? true : false;\r\n }());\r\n\r\n $.support.currentGrid = (function () {\r\n /// Returns a value indicating what grid range the current browser width is within.\r\n /// \r\n /// An object containing two properties.\r\n /// 1: grid - The current applied grid; either xxs, xs, s, m, or l.\r\n /// 2: index - The index of the current grid in the range.\r\n /// 3: range - The available grid range.\r\n ///\r\n return function () {\r\n var $div = $(\"
\").addClass(\"grid-state-indicator\").prependTo(\"body\");\r\n\r\n // These numbers match values in the css\r\n var grids = [\"xxs\", \"xs\", \"s\", \"m\", \"l\"],\r\n key = parseInt($div.width(), 10);\r\n\r\n $div.remove();\r\n\r\n return {\r\n grid: grids[key],\r\n index: key,\r\n range: grids\r\n };\r\n };\r\n }());\r\n\r\n $.support.scrollbarWidth = (function () {\r\n /// Returns a value indicating the width of the browser scrollbar.\r\n /// The width in pixels.\r\n return function () {\r\n\r\n var width = 0;\r\n if (d.body.clientWidth < w.innerWidth) {\r\n\r\n var $div = $(\"
\").addClass(\"scrollbar-measure\").prependTo(\"body\");\r\n width = $div[0].offsetWidth - $div[0].clientWidth;\r\n\r\n $div.remove();\r\n }\r\n\r\n return width;\r\n };\r\n }());\r\n\r\n $.toggleBodyLock = function () {\r\n /// \r\n /// Toggles a locked state on the body which toggles both scrollbar visibility and padding on the body.\r\n /// \r\n\r\n var $html = $(\"html\"),\r\n $body = $(\"body\"),\r\n bodyPad;\r\n\r\n // Remove.\r\n if ($html.attr(\"data-lock\") !== undefined) {\r\n\r\n bodyPad = $body.data(\"bodyPad\");\r\n $body.css(\"padding-right\", bodyPad || \"\")\r\n .removeData(\"bodyPad\");\r\n\r\n $html.removeAttr(\"data-lock\")\r\n .trigger($.Event(\"unlock.r.bodylock\"));\r\n return;\r\n }\r\n\r\n // Add\r\n bodyPad = parseInt($body.css(\"padding-right\") || 0);\r\n var scrollWidth = $.support.scrollbarWidth();\r\n\r\n if (scrollWidth) {\r\n $body.css(\"padding-right\", bodyPad + scrollWidth);\r\n\r\n if (bodyPad) {\r\n $body.data(\"bodyPad\", bodyPad);\r\n }\r\n\t\t}\r\n\t\t\r\n $html.attr(\"data-lock\", \"\")\r\n .trigger($.Event(\"lock.r.bodylock\", { padding: bodyPad + scrollWidth }));\r\n };\r\n\r\n $.support.transition = (function () {\r\n /// Returns a value indicating whether the browser supports CSS transitions.\r\n /// True if the current browser supports css transitions.\r\n\r\n var transitionEnd = function () {\r\n /// Gets transition end event for the current browser.\r\n /// The transition end event for the current browser.\r\n\r\n var div = d.createElement(\"div\"),\r\n transEndEventNames = {\r\n \"transition\": \"transitionend\",\r\n \"WebkitTransition\": \"webkitTransitionEnd\",\r\n \"MozTransition\": \"transitionend\",\r\n \"OTransition\": \"oTransitionEnd otransitionend\"\r\n };\r\n\r\n var names = Object.keys(transEndEventNames),\r\n len = names.length;\r\n\r\n for (var i = 0; i < len; i++) {\r\n if (div.style[names[i]] !== undefined) {\r\n return { end: transEndEventNames[names[i]] };\r\n }\r\n }\r\n \r\n // Falsy and provides a common return expression for the function.\r\n return null; \r\n };\r\n\r\n return transitionEnd();\r\n\r\n }());\r\n\r\n $.fn.redraw = function () {\r\n /// Forces the browser to redraw by measuring the given target.\r\n /// The jQuery object for chaining.\r\n var redraw;\r\n return this.each(function () {\r\n redraw = this.offsetWidth;\r\n });\r\n };\r\n\r\n (function () {\r\n var getDuration = function ($element) {\r\n var rtransition = /\\d+(.\\d+)?/;\r\n return (rtransition.test($element.css(\"transition-duration\")) ? $element.css(\"transition-duration\").match(rtransition)[0] : 0) * 1000;\r\n };\r\n\r\n $.fn.ensureTransitionEnd = function (duration) {\r\n /// \r\n /// Ensures that the transition end callback is triggered.\r\n /// http://blog.alexmaccaw.com/css-transitions\r\n ///\r\n\r\n if (!$.support.transition) {\r\n return this;\r\n }\r\n\r\n var called = false,\r\n $this = $(this),\r\n callback = function () { if (!called) { $this.trigger($.support.transition.end); } };\r\n\r\n if (!duration) {\r\n duration = getDuration($this);\r\n }\r\n\r\n $this.one($.support.transition.end, function () { called = true; });\r\n w.setTimeout(callback, duration);\r\n return this;\r\n };\r\n\r\n $.fn.onTransitionEnd = function (callback) {\r\n /// Performs the given callback at the end of a css transition.\r\n /// The function to call on transition end.\r\n /// The jQuery object for chaining.\r\n\r\n var supportTransition = $.support.transition;\r\n return this.each(function () {\r\n\r\n if (!$.isFunction(callback)) {\r\n return;\r\n }\r\n\r\n var $this = $(this),\r\n duration = getDuration($this),\r\n error = duration / 10,\r\n start = new Date(),\r\n args = arguments;\r\n\r\n $this.redraw();\r\n supportTransition ? $this.one(supportTransition.end, function () {\r\n // Prevent events firing too early.\r\n var end = new Date();\r\n if (end.getMilliseconds() - start.getMilliseconds() <= error) {\r\n w.setTimeout(function () {\r\n callback.apply(this, args);\r\n }.bind(this), duration);\r\n return;\r\n }\r\n\r\n callback.apply(this, args);\r\n\r\n }) : callback.apply(this, args);\r\n });\r\n };\r\n }());\r\n\r\n $.support.touchEvents = (function () {\r\n return (\"ontouchstart\" in w) || (w.DocumentTouch && d instanceof w.DocumentTouch);\r\n }());\r\n\r\n $.support.pointerEvents = (function () {\r\n return (w.PointerEvent || w.MSPointerEvent);\r\n }());\r\n\r\n (function () {\r\n var supportTouch = $.support.touchEvents,\r\n supportPointer = $.support.pointerEvents;\r\n\r\n var pointerStart = [\"pointerdown\", \"MSPointerDown\"],\r\n pointerMove = [\"pointermove\", \"MSPointerMove\"],\r\n pointerEnd = [\"pointerup\", \"pointerout\", \"pointercancel\", \"pointerleave\",\r\n \"MSPointerUp\", \"MSPointerOut\", \"MSPointerCancel\", \"MSPointerLeave\"];\r\n\r\n var touchStart = \"touchstart\",\r\n touchMove = \"touchmove\",\r\n touchEnd = [\"touchend\", \"touchleave\", \"touchcancel\"];\r\n\r\n var mouseStart = \"mousedown\",\r\n mouseMove = \"mousemove\",\r\n mouseEnd = [\"mouseup\", \"mouseleave\"];\r\n\r\n var getEvents = function (ns) {\r\n var estart,\r\n emove,\r\n eend;\r\n\r\n // Keep the events separate since support could be crazy.\r\n if (supportTouch) {\r\n estart = touchStart + ns;\r\n emove = touchMove + ns;\r\n eend = (touchEnd.join(ns + \" \")) + ns;\r\n }\r\n else if (supportPointer) {\r\n estart = (pointerStart.join(ns + \" \")) + ns;\r\n emove = (pointerMove.join(ns + \" \")) + ns;\r\n eend = (pointerEnd.join(ns + \" \")) + ns;\r\n\r\n } else {\r\n estart = mouseStart + ns;\r\n emove = mouseMove + ns;\r\n eend = (mouseEnd.join(ns + \" \")) + ns;\r\n }\r\n\r\n return {\r\n start: estart,\r\n move: emove,\r\n end: eend\r\n };\r\n };\r\n\r\n var addSwipe = function ($elem, handler) {\r\n /// Adds swiping functionality to the given element.\r\n /// \r\n /// The jQuery object representing the given node(s).\r\n /// \r\n /// The jQuery object for chaining.\r\n\r\n var ns = handler.namespace ? \".\" + handler.namespace : \"\",\r\n eswipestart = \"swipestart\",\r\n eswipemove = \"swipemove\",\r\n eswipeend = \"swipeend\",\r\n etouch = getEvents(ns);\r\n\r\n // Set the touchAction variable for move.\r\n var touchAction = handler.data && handler.data.touchAction || \"none\",\r\n sensitivity = handler.data && handler.data.sensitivity || 5;\r\n\r\n if (supportPointer) {\r\n // Enable extended touch events on supported browsers before any touch events.\r\n $elem.css({ \"-ms-touch-action\": \"\" + touchAction + \"\", \"touch-action\": \"\" + touchAction + \"\" });\r\n }\r\n\r\n return $elem.each(function () {\r\n var $this = $(this);\r\n\r\n var start = {},\r\n delta = {},\r\n onMove = function (event) {\r\n\r\n // Normalize the variables.\r\n var isMouse = event.type === \"mousemove\",\r\n isPointer = event.type !== \"touchmove\" && !isMouse,\r\n original = event.originalEvent,\r\n moveEvent;\r\n\r\n // Only left click allowed.\r\n if (isMouse && event.which !== 1) {\r\n return;\r\n }\r\n\r\n // One touch allowed.\r\n if (original.touches && original.touches.length > 1) {\r\n return;\r\n }\r\n\r\n // Ensure swiping with one touch and not pinching.\r\n if (event.scale && event.scale !== 1) {\r\n return;\r\n }\r\n\r\n var dx = (isMouse ? original.pageX : isPointer ? original.clientX : original.touches[0].pageX) - start.x,\r\n dy = (isMouse ? original.pageY : isPointer ? original.clientY : original.touches[0].pageY) - start.y;\r\n\r\n var doSwipe,\r\n percentX = Math.abs(parseFloat((dx / $this.width()) * 100)) || 100,\r\n percentY = Math.abs(parseFloat((dy / $this.height()) * 100)) || 100;\r\n\r\n // Work out whether to do a scroll based on the sensitivity limit.\r\n switch (touchAction) {\r\n case \"pan-x\":\r\n if (Math.abs(dy) > Math.abs(dx)) {\r\n event.preventDefault();\r\n }\r\n doSwipe = Math.abs(dy) > Math.abs(dx) && Math.abs(dy) > sensitivity && percentY < 100;\r\n break;\r\n case \"pan-y\":\r\n if (Math.abs(dx) > Math.abs(dy)) {\r\n event.preventDefault();\r\n }\r\n doSwipe = Math.abs(dx) > Math.abs(dy) && Math.abs(dx) > sensitivity && percentX < 100;\r\n break;\r\n default:\r\n event.preventDefault();\r\n doSwipe = Math.abs(dy) > sensitivity || Math.abs(dx) > sensitivity && percentX < 100 && percentY < 100;\r\n break;\r\n }\r\n\r\n event.stopPropagation();\r\n\r\n if (!doSwipe) {\r\n return;\r\n }\r\n\r\n moveEvent = $.Event(eswipemove, { delta: { x: dx, y: dy } });\r\n $this.trigger(moveEvent);\r\n\r\n if (moveEvent.isDefaultPrevented()) {\r\n return;\r\n }\r\n\r\n // Measure change in x and y.\r\n delta = {\r\n x: dx,\r\n y: dy\r\n };\r\n },\r\n onEnd = function () {\r\n\r\n // Measure duration\r\n var duration = +new Date() - start.time,\r\n endEvent;\r\n\r\n // Determine if slide attempt triggers slide.\r\n if (Math.abs(delta.x) > 1 || Math.abs(delta.y) > 1) {\r\n\r\n // Set the direction and return it.\r\n var horizontal = delta.x < 0 ? \"left\" : \"right\",\r\n vertical = delta.y < 0 ? \"up\" : \"down\",\r\n direction = Math.abs(delta.x) > Math.abs(delta.y) ? horizontal : vertical;\r\n\r\n endEvent = $.Event(eswipeend, { delta: delta, direction: direction, duration: duration });\r\n\r\n $this.trigger(endEvent);\r\n }\r\n\r\n // Disable the touch events till next time.\r\n $this.off(etouch.move).off(etouch.end);\r\n };\r\n\r\n $this.off(etouch.start).on(etouch.start, function (event) {\r\n\r\n // Normalize the variables.\r\n var isMouse = event.type === \"mousedown\",\r\n isPointer = event.type !== \"touchstart\" && !isMouse,\r\n original = event.originalEvent;\r\n\r\n if ((isPointer || isMouse) && $(event.target).is(\"img\")) {\r\n event.preventDefault();\r\n }\r\n\r\n event.stopPropagation();\r\n\r\n // Measure start values.\r\n start = {\r\n // Get initial touch coordinates.\r\n x: isMouse ? original.pageX : isPointer ? original.clientX : original.touches[0].pageX,\r\n y: isMouse ? original.pageY : isPointer ? original.clientY : original.touches[0].pageY,\r\n\r\n // Store time to determine touch duration.\r\n time: +new Date()\r\n };\r\n\r\n var startEvent = $.Event(eswipestart, { start: start });\r\n\r\n $this.trigger(startEvent);\r\n\r\n if (startEvent.isDefaultPrevented()) {\r\n return;\r\n }\r\n\r\n // Reset delta and end measurements.\r\n delta = { x: 0, y: 0 };\r\n\r\n // Attach touchmove and touchend listeners.\r\n $this.on(etouch.move, onMove)\r\n .on(etouch.end, onEnd);\r\n });\r\n });\r\n };\r\n\r\n var removeSwipe = function ($elem, handler) {\r\n /// Removes swiping functionality from the given element.\r\n\r\n var ns = handler.namespace ? \".\" + handler.namespace : \"\",\r\n etouch = getEvents(ns);\r\n\r\n return $elem.each(function () {\r\n\r\n // Disable extended touch events on ie.\r\n // Unbind events.\r\n $(this).css({ \"-ms-touch-action\": \"\", \"touch-action\": \"\" })\r\n .off(etouch.start).off(etouch.move).off(etouch.end);\r\n });\r\n };\r\n\r\n // Create special events so we can use on/off.\r\n $.event.special.swipe = {\r\n add: function (handler) {\r\n addSwipe($(this), handler);\r\n },\r\n remove: function (handler) {\r\n removeSwipe($(this), handler);\r\n }\r\n };\r\n }());\r\n\r\n $.extend($.expr[\":\"], {\r\n attrStart: function (el, i, props) {\r\n /// Custom selector extension to allow attribute starts with selection.\r\n /// The element to test against.\r\n /// The index of the element in the stack.\r\n /// Metadata for the element.\r\n /// True if the element is a match; otherwise, false.\r\n var hasAttribute = false;\r\n\r\n $.each(el.attributes, function () {\r\n if (this.name.indexOf(props[3]) === 0) {\r\n hasAttribute = true;\r\n return false; // Exit the iteration.\r\n }\r\n return true;\r\n });\r\n\r\n return hasAttribute;\r\n }\r\n });\r\n\r\n $.getDataOptions = function ($elem, filter) {\r\n /// Creates an object containing options populated from an elements data attributes.\r\n /// The object representing the DOM element.\r\n /// The prefix with filter to identify the data attribute.\r\n /// The extended object.\r\n var options = {};\r\n $.each($elem.data(), function (key, val) {\r\n if (key.indexOf(filter) === 0 && key.length > filter.length) {\r\n\r\n // Build a key with the correct format.\r\n var length = filter.length,\r\n newKey = key.charAt(length).toLowerCase() + key.substring(length + 1);\r\n\r\n options[newKey] = val;\r\n }\r\n });\r\n\r\n return Object.keys(options).length ? options : $elem.data();\r\n };\r\n\r\n $.debounce = function (func, wait, immediate) {\r\n /// \r\n /// Returns a function, that, as long as it continues to be invoked, will not\r\n /// be triggered. The function will be called after it stops being called for\r\n /// N milliseconds. If `immediate` is passed, trigger the function on the\r\n /// leading edge, instead of the trailing.\r\n ///\r\n /// \r\n /// The function to debounce.\r\n /// \r\n /// \r\n /// The number of milliseconds to delay.\r\n /// \r\n /// \r\n /// Specify execution on the leading edge of the timeout.\r\n /// \r\n /// The function.\r\n var timeout;\r\n return function () {\r\n var context = this, args = arguments;\r\n w.clearTimeout(timeout);\r\n timeout = w.setTimeout(function () {\r\n timeout = null;\r\n if (!immediate) { func.apply(context, args); }\r\n }, wait);\r\n if (immediate && !timeout) { func.apply(context, args); }\r\n };\r\n };\r\n\r\n (function (old) {\r\n /// Override the core html method in the jQuery object to fire a RBPchanged event whenever it is called.\r\n /// \r\n /// The jQuery function being overridden.\r\n /// \r\n /// The jQuery object for chaining.\r\n\r\n var echanged = $.Event(\"RBPchanged\"),\r\n $d = $(d);\r\n\r\n $.fn.html = function () {\r\n // Execute the original html() method using the augmented arguments collection.\r\n var result = old.apply(this, arguments);\r\n\r\n if (arguments.length) {\r\n $d.trigger(echanged);\r\n }\r\n\r\n return result;\r\n\r\n };\r\n })($.fn.html);\r\n} (jQuery, window, document));"],"sourceRoot":""}