{"version":3,"file":"theme.js.map","sources":["../../../js/mrare/aos.js","../../../js/mrare/background-images.js","../../../js/mrare/util.js","../../../js/mrare/dropdown-grid.js","../../../js/mrare/fade-page.js","../../../js/mrare/flickity.js","../../../js/mrare/recaptcha-v2.js","../../../js/mrare/form-email.js","../../../js/mrare/ion-rangeslider.js","../../../js/mrare/isotope.js","../../../js/mrare/jarallax.js","../../../js/mrare/maps-style.js","../../../js/mrare/maps.js","../../../js/mrare/overlay-nav.js","../../../js/mrare/plyr.js","../../../js/mrare/popovers.js","../../../js/mrare/reading-position.js","../../../js/mrare/smooth-scroll.js","../../../js/mrare/sticky.js","../../../js/mrare/index.js"],"sourcesContent":["\n//\n//\n// aos.js\n//\n// Initialises the animate on scroll plugin\n\nimport AOS from 'aos';\n\nAOS.init({ once: true });\n","//\n//\n// background-images.js\n//\n// a javascript fallback for CSS 'object-fit' property for browsers that don't support it\n\nimport jQuery from 'jquery';\n\n(($) => {\n if ('objectFit' in document.documentElement.style === false) {\n $('.bg-image').each(function attachBg() {\n const img = $(this);\n const src = img.attr('src');\n const classes = img.get(0).classList;\n // Replaces the default element with a \n // to attach background using legacy friendly CSS rules\n img.before($(`
`));\n // Removes original as it is no longer required\n img.remove();\n });\n }\n})(jQuery);\n","//\n//\n// Util\n//\n// Medium Rare utility functions\n// v 1.2.0\n\nimport jQuery from 'jquery';\n\nconst mrUtil = (($) => {\n const VERSION = '1.2.0';\n\n const Tagname = {\n SCRIPT: 'script',\n };\n\n const Selector = {\n RECAPTCHA: '[data-recaptcha]',\n };\n\n // Activate tooltips\n $('body').tooltip({ selector: '[data-toggle=\"tooltip\"]', container: 'body' });\n\n // Activate popovers\n $('body').popover({ selector: '[data-toggle=\"popover\"]', container: 'body' });\n\n // Activate toasts\n $('.toast').toast();\n\n const Util = {\n\n version: VERSION,\n selector: Selector,\n\n activateIframeSrc(iframe) {\n const $iframe = $(iframe);\n if ($iframe.attr('data-src')) {\n $iframe.attr('src', $iframe.attr('data-src'));\n }\n },\n\n idleIframeSrc(iframe) {\n const $iframe = $(iframe);\n $iframe.attr('data-src', $iframe.attr('src')).attr('src', '');\n },\n\n forEach(array, callback, scope) {\n if (array) {\n if (array.length) {\n for (let i = 0; i < array.length; i += 1) {\n callback.call(scope, i, array[i]); // passes back stuff we need\n }\n } else if (array[0] || mrUtil.isElement(array)) { callback.call(scope, 0, array); }\n }\n },\n\n dedupArray(arr) {\n return arr.reduce((p, c) => {\n // create an identifying String from the object values\n const id = JSON.stringify(c);\n // if the JSON string is not found in the temp array\n // add the object to the output array\n // and add the key to the temp array\n if (p.temp.indexOf(id) === -1) {\n p.out.push(c);\n p.temp.push(id);\n }\n return p;\n // return the deduped array\n }, { temp: [], out: [] }).out;\n },\n\n isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n },\n\n getFuncFromString(funcName, context) {\n const findFunc = funcName || null;\n\n // if already a function, return\n if (typeof findFunc === 'function') return funcName;\n\n // if string, try to find function or method of object (of \"obj.func\" format)\n if (typeof findFunc === 'string') {\n if (!findFunc.length) return null;\n let target = context || window;\n const func = findFunc.split('.');\n while (func.length) {\n const ns = func.shift();\n if (typeof target[ns] === 'undefined') return null;\n target = target[ns];\n }\n if (typeof target === 'function') return target;\n }\n // return null if could not parse\n return null;\n },\n getScript(source, callback) {\n let script = document.createElement(Tagname.SCRIPT);\n const prior = document.getElementsByTagName(Tagname.SCRIPT)[0];\n script.async = 1;\n script.defer = 1;\n\n script.onreadystatechange = (_, isAbort) => {\n if (isAbort || !script.readyState || /loaded|complete/.test(script.readyState)) {\n script.onload = null;\n script.onreadystatechange = null;\n script = undefined;\n\n if (!isAbort && callback && typeof callback === 'function') { callback(); }\n }\n };\n\n script.onload = script.onreadystatechange;\n\n script.src = source;\n prior.parentNode.insertBefore(script, prior);\n },\n };\n\n return Util;\n})(jQuery);\n\nexport default mrUtil;\n","//\n//\n// dropdown-grid.js\n//\n// Handles \"mega menu\" style dropdowns allowing for full BS grid markup within.\n// Based on Bootstrap v4.1.x dropdown.js which is licensed under MIT\n// (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n\nimport jQuery from 'jquery';\nimport mrUtil from './util';\n\nconst mrDropdownGrid = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'mrDropdownGrid';\n const VERSION = '1.0.0';\n const DATA_KEY = 'mr.dropdownGrid';\n const EVENT_KEY = `.${DATA_KEY}`;\n const DATA_API_KEY = '.data-api';\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n // KeyboardEvent.which value for Escape (Esc) key\n const ESCAPE_KEYCODE = 27;\n // KeyboardEvent.which value for space key\n const SPACE_KEYCODE = 32;\n // KeyboardEvent.which value for tab key\n const TAB_KEYCODE = 9;\n // KeyboardEvent.which value for up arrow key\n const ARROW_UP_KEYCODE = 38;\n // KeyboardEvent.which value for down arrow key\n const ARROW_DOWN_KEYCODE = 40;\n // MouseEvent.which value for the right button (assuming a right-handed mouse)\n const RIGHT_MOUSE_BUTTON_WHICH = 3;\n const REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`);\n\n const ClassName = {\n SHOW: 'show',\n };\n\n const Event = {\n LOAD_DATA_API: `load${EVENT_KEY}${DATA_API_KEY}`,\n RESIZE: `resize${EVENT_KEY}`,\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n MOUSE_ENTER: `mouseenter${EVENT_KEY}`,\n MOUSE_LEAVE: `mouseleave${EVENT_KEY}`,\n CLICK_DATA_API: `click${EVENT_KEY}${DATA_API_KEY}`,\n KEYDOWN_DATA_API: `keydown${EVENT_KEY}${DATA_API_KEY}`,\n KEYUP_DATA_API: `keyup${EVENT_KEY}${DATA_API_KEY}`,\n };\n\n const Selector = {\n DATA_TOGGLE: '[data-toggle=\"dropdown-grid\"]',\n FORM_CHILD: '.dropdown form',\n MENU: '.dropdown-menu',\n CONTAINER: '.dropdown-menu',\n CONTENT: '[data-dropdown-content]',\n NAVBAR_NAV: '.navbar-nav',\n VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)',\n };\n\n const Options = {\n HOVER: 'data-hover',\n BODY_HOVER: 'data-dropdown-grid-hover',\n };\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class DropdownGrid {\n constructor(element) {\n this.ticking = false;\n this.isActive = false;\n this.element = element;\n this.getOptions();\n this.parent = DropdownGrid.getParentFromElement(this.element);\n this.menu = this.getMenuElement();\n this.container = this.getContainerElement();\n this.content = this.getContentElement();\n this.isSubmenu = this.hasParentMenu();\n if (this.isSubmenu) {\n this.siblingMenus = this.getSiblingMenus();\n }\n this.submenus = this.getSubmenus();\n this.hover = this.options.hover;\n this.addEventListeners();\n this.setResizeEvent();\n }\n\n static get VERSION() {\n return VERSION;\n }\n\n getOptions() {\n if (!this.options) {\n this.options = {};\n this.options.hover = (this.element.getAttribute(Options.HOVER) === 'true'\n || document.body.getAttribute(Options.BODY_HOVER) === 'true')\n && this.element.getAttribute(Options.HOVER) !== 'false';\n }\n }\n\n toggle(event) {\n this.getParentMenu();\n if (this.element.disabled || $(this.element).hasClass(ClassName.DISABLED)) {\n return;\n }\n\n this.isActive = $(this.menu).hasClass(ClassName.SHOW);\n const togglingOff = this.isActive;\n const togglingOn = !this.isActive;\n\n if (!this.isSubmenu) {\n DropdownGrid.clearMenus();\n }\n\n if (!this.isSubmenu && togglingOff) {\n return;\n }\n\n if (!this.isSubmenu && togglingOn && event && event.type === Event.MOUSE_LEAVE) {\n return;\n }\n\n if (this.isSubmenu && this.isActive) {\n DropdownGrid.clearMenus(null, this.element);\n DropdownGrid.clearMenus(null, this.submenus);\n return;\n }\n\n if (this.isSubmenu && !this.isActive) {\n DropdownGrid.clearMenus(null, this.siblingMenus);\n }\n\n const relatedTarget = {\n relatedTarget: this.element,\n };\n const showEvent = $.Event(Event.SHOW, relatedTarget);\n\n $(this.parent).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement\n && $(this.parent).closest(Selector.NAVBAR_NAV).length === 0) {\n $(document.body).children().on('mouseover', null, $.noop);\n }\n\n this.element.focus();\n this.element.setAttribute('aria-expanded', true);\n\n $(this.menu).toggleClass(ClassName.SHOW);\n // Recalculate positions after applying the shown class\n // This is because jQuery can't measure an invisible element.\n this.updatePosition();\n this.isActive = true;\n $(this.parent)\n .toggleClass(ClassName.SHOW)\n .trigger($.Event(Event.SHOWN, relatedTarget));\n }\n\n updatePosition(winWidth) {\n const windowWidth = winWidth || window.innerWidth;\n const trigger = mrDropdownGrid.getDimensionsFromElement(this.element);\n this.positionContainer(trigger.offsetLeft);\n this.positionContent(windowWidth, trigger.offsetLeft);\n }\n\n positionContainer(offsetLeft) {\n if (this.container) {\n this.container.style.left = `-${offsetLeft}px`;\n } else {\n throw new TypeError('No element matching .dropdown-menu.container found.');\n }\n }\n\n positionContent(windowWidth, offsetLeft) {\n if (this.content) {\n let leftValue;\n // let topValue;\n const contentRect = mrDropdownGrid.getDimensionsFromElement(this.content);\n const contentWidth = contentRect.width;\n\n // If submenu, the left of the content needs to sit to the side of the trigger's content\n if (this.isSubmenu) {\n this.getParentMenu();\n const parentContent = mrDropdownGrid.getDimensionsFromElement(this.parentMenu.content);\n // Calculate X Offset\n if (parentContent.offsetLeft + parentContent.width + contentWidth <= windowWidth) {\n // Submenu can fit next to parent menu\n leftValue = parentContent.offsetLeft + parentContent.width;\n } else if (parentContent.offsetLeft >= contentWidth) {\n // No room for submenu to fit to the right of parent, sit it to the left instead.\n leftValue = parentContent.offsetLeft - contentWidth;\n } else {\n leftValue = 0;\n }\n // Calculate Y offset\n } else if (contentWidth + offsetLeft >= windowWidth) {\n // Not a submenu, but if the content won't fit, sit content close to the right boundary\n leftValue = windowWidth - contentWidth;\n } else {\n // Not a submenu, and there is room to fit normally and sit below trigger\n leftValue = offsetLeft;\n }\n\n const leftString = `${Math.round(leftValue)}px`;\n this.content.style.left = leftString;\n } else {\n throw new TypeError('No [data-dropdown-content] element was found.');\n }\n }\n\n setResizeEvent() {\n $(window).on(Event.RESIZE, () => {\n if (!this.ticking) {\n window.requestAnimationFrame(() => {\n this.updatePosition();\n this.ticking = false;\n });\n this.ticking = true;\n }\n });\n }\n\n getMenuElement() {\n if (!this.menu) {\n if (this.parent) {\n this.menu = this.parent.querySelector(Selector.MENU);\n }\n }\n return this.menu;\n }\n\n getContainerElement() {\n if (!this.container) {\n if (this.parent) {\n this.container = this.parent.querySelector(`${Selector.MENU}${Selector.CONTAINER}`);\n }\n }\n return this.container;\n }\n\n getContentElement() {\n if (!this.content) {\n if (this.parent) {\n this.content = this.container.querySelector(Selector.CONTENT);\n }\n }\n return this.content;\n }\n\n hasParentMenu() {\n return $(this.element).closest(Selector.CONTENT).length > 0;\n }\n\n getParentMenu() {\n if (this.isSubmenu && !this.parentMenu) {\n this.parentMenu = $(this.parent)\n .closest(Selector.MENU)\n .siblings(Selector.DATA_TOGGLE)\n .data(DATA_KEY);\n }\n }\n\n getSiblingMenus() {\n return $(this.element)\n .closest(Selector.CONTENT)\n .get(0).querySelectorAll(Selector.DATA_TOGGLE);\n }\n\n getSubmenus() {\n const children = this.content.querySelectorAll(Selector.DATA_TOGGLE);\n this.isParent = children.length !== 0;\n return children;\n }\n\n addEventListeners() {\n $(this.element).on(Event.CLICK, (event) => {\n event.preventDefault();\n event.stopPropagation();\n this.toggle();\n });\n\n if (this.hover) {\n $(this.parent).on(`${Event.MOUSE_ENTER} ${Event.MOUSE_LEAVE}`, (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n if ((`${event.type}${EVENT_KEY}` === Event.MOUSE_ENTER && this.isActive)\n || (`${event.type}${EVENT_KEY}` === Event.MOUSE_LEAVE && !this.isActive)) {\n return;\n }\n this.toggle(event);\n });\n }\n }\n\n static getDimensionsFromElement(element) {\n if (element && mrUtil.isElement(element)) {\n const rect = element.getBoundingClientRect();\n rect.offsetLeft = Math.round((rect.left + window.pageXOffset)\n - document.documentElement.clientLeft);\n return rect;\n }\n // If not an element, throw an error\n throw new TypeError('Can\\'t get a measurement from a non-element');\n }\n\n static getParentFromElement(element) {\n return element.parentNode;\n }\n\n static clearMenus(event, specificToggle) {\n if (event\n && (event.which === RIGHT_MOUSE_BUTTON_WHICH\n || event.type === 'keyup'\n ) && event.which !== TAB_KEYCODE) {\n return;\n }\n\n let toggles;\n if (specificToggle && typeof specificToggle === 'object') {\n toggles = specificToggle;\n } else {\n toggles = document.querySelectorAll(Selector.DATA_TOGGLE);\n }\n\n mrUtil.forEach(toggles, (index, toggle) => {\n const parent = DropdownGrid.getParentFromElement(toggle);\n const context = $(toggle).data(DATA_KEY);\n const relatedTarget = {\n relatedTarget: toggle,\n };\n\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n\n if (!context) {\n return;\n }\n\n const dropdownMenu = context.menu;\n if (!$(parent).hasClass(ClassName.SHOW)) {\n return;\n }\n\n if (event) {\n if (\n ((event.type === 'click' && /input|textarea/i.test(event.target.tagName))\n || (event.type === 'keyup' && event.which === TAB_KEYCODE))\n && $.contains(parent, event.target)) {\n return;\n }\n }\n\n if (event) {\n if (event.type === 'click' && ($.contains(context.content, event.target) || context.content.isSameNode(event.target))) {\n return;\n }\n }\n\n const hideEvent = $.Event(Event.HIDE, relatedTarget);\n $(parent).trigger(hideEvent);\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop);\n }\n\n toggle.setAttribute('aria-expanded', 'false');\n context.isActive = false;\n $(dropdownMenu).removeClass(ClassName.SHOW);\n $(parent)\n .removeClass(ClassName.SHOW)\n .trigger($.Event(Event.HIDDEN, relatedTarget));\n });\n }\n\n static jQueryInterface(config) {\n return this.each(function jqEachDropdownGrid() {\n const $element = $(this);\n\n let data = $element.data(DATA_KEY);\n if (!data) {\n data = new DropdownGrid(this);\n $element.data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n }\n });\n }\n\n // eslint-disable-next-line complexity\n static dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName)\n ? (event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE)\n && ((event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE)\n || $(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {\n return;\n }\n\n const parent = DropdownGrid.getParentFromElement(this);\n const isActive = $(parent).hasClass(ClassName.SHOW);\n\n if ((!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE))\n || (isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE))) {\n if (event.which === ESCAPE_KEYCODE) {\n const toggle = parent.querySelector(Selector.DATA_TOGGLE);\n $(toggle).trigger('focus');\n }\n\n $(this).trigger('click');\n return;\n }\n\n const items = [].slice.call(parent.querySelectorAll(Selector.VISIBLE_ITEMS));\n\n if (items.length === 0) {\n return;\n }\n\n let index = items.indexOf(event.target);\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) { // Up\n index -= 1;\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { // Down\n index += 1;\n }\n\n if (index < 0) {\n index = 0;\n }\n\n items[index].focus();\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document)\n .on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, DropdownGrid.dataApiKeydownHandler)\n .on(Event.KEYDOWN_DATA_API, Selector.MENU, DropdownGrid.dataApiKeydownHandler)\n .on(`${Event.CLICK_DATA_API} ${Event.KEYUP_DATA_API}`, DropdownGrid.clearMenus)\n .on(Event.CLICK_DATA_API, Selector.FORM_CHILD, (e) => {\n e.stopPropagation();\n });\n\n /**\n * ------------------------------------------------------------------------\n * Initialise by data attribute\n * ------------------------------------------------------------------------\n */\n\n $(document).ready(() => {\n const dropdownGridElements = $.makeArray($(Selector.DATA_TOGGLE));\n\n /* eslint-disable no-plusplus */\n for (let i = dropdownGridElements.length; i--;) {\n const $dropdownGrid = $(dropdownGridElements[i]);\n DropdownGrid.jQueryInterface.call($dropdownGrid, $dropdownGrid.data());\n }\n });\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n /* eslint-disable no-param-reassign */\n $.fn[NAME] = DropdownGrid.jQueryInterface;\n $.fn[NAME].Constructor = DropdownGrid;\n $.fn[NAME].noConflict = function DropdownGridNoConflict() {\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n return DropdownGrid.jQueryInterface;\n };\n /* eslint-enable no-param-reassign */\n\n return DropdownGrid;\n})(jQuery);\n\nexport default mrDropdownGrid;\n","//\n//\n// fade-page.js\n//\n//\n\n// Page Transition to fade out when clicking a link which has opted in using class 'fade-page'\n\n(() => {\n const ATTR_HREF = 'href';\n const EVENT_CLICK = 'click';\n const SELECTOR_FADE = 'fade-page';\n const EFFECT_DELAY = 500;\n\n const fadePage = document.getElementsByClassName(SELECTOR_FADE);\n\n function fadePageFunction(event) {\n if (!(event.ctrlKey\n || event.shiftKey\n || event.metaKey\n || (event.button && event.button === 1))) {\n event.preventDefault();\n event.stopPropagation();\n document.body.classList.add(SELECTOR_FADE);\n\n const href = this.getAttribute(ATTR_HREF);\n setTimeout(() => {\n if (href !== '' && href !== '#') {\n window.location.href = href;\n }\n }, EFFECT_DELAY);\n }\n }\n // Bind click event\n for (let i = 0; i < fadePage.length; i += 1) {\n fadePage[i].addEventListener(EVENT_CLICK, fadePageFunction, false);\n }\n})();\n","//\n//\n// flickity.js\n//\n// Reset size of flickity sliders embedded in modals\n\nimport jQuery from 'jquery';\nimport 'flickity';\n\n(() => {\n $(document).on('shown.bs.modal layoutComplete', (e) => {\n const flickityInstance = $(e.target).find('[data-flickity]');\n flickityInstance.each((index, instance) => {\n const $instance = $(instance);\n if ($instance.data().flickity.isInitActivated) {\n $instance.flickity('resize');\n }\n });\n });\n})(jQuery);\n","//\n//\n// reacaptcha-v2.js\n//\n// Handles initialization and validation of recaptcha widgets\n\n/* global grecaptcha */\nimport mrUtil from './util';\n\nconst mrRecaptchav2 = (($) => {\n // Check mrUtil is present and correct version\n if (!(mrUtil && mrUtil.version >= '1.2.0')) {\n throw new Error('mrUtil >= version 1.2.0 is required.');\n }\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'mrRecaptchav2';\n const VERSION = '1.0.0';\n const DATA_KEY = 'mr.recaptchav2';\n // const EVENT_KEY = `.${DATA_KEY}`;\n // const DATA_API_KEY = '.data-api';\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n const RECAPTCHA_CALLBACK = 'mrRecaptchav2Init';\n\n const RemoteScript = {\n RECAPTCHAV2: `https://www.google.com/recaptcha/api.js?onload=${RECAPTCHA_CALLBACK}&render=explicit`,\n };\n\n const Selector = {\n DATA_RECAPTCHA: '[data-recaptcha]',\n FORM: 'form',\n };\n\n const Options = {\n INVISIBLE: 'invisible',\n };\n\n // \"static\" properties\n const instances = [];\n let apiReady = false;\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Recaptchav2 {\n constructor(element) {\n this.element = element;\n this.form = this.getForm();\n this.isReady = false;\n this.isValid = false;\n this.options = $(this.element).data();\n this.invisible = this.options.size === Options.INVISIBLE;\n this.id = null;\n // Save instance into static property array\n instances.push(this);\n }\n\n // getters\n static get VERSION() {\n return VERSION;\n }\n\n static get ready() {\n return apiReady;\n }\n\n static get instances() {\n return instances;\n }\n\n init() {\n if (this.element.innerHTML.replace(/[\\s\\xA0]+/g, '') === '') {\n this.id = grecaptcha.render(this.element, {\n sitekey: this.options.sitekey,\n theme: this.options.theme,\n size: this.options.size,\n badge: this.options.badge,\n tabindex: this.options.tabindex,\n callback: () => { this.validate(); },\n 'expired-callback': () => { this.invalidate(); },\n });\n this.isReady = true;\n }\n }\n\n validate() {\n this.isValid = true;\n if (this.invisible && this.form) {\n $(this.form).trigger('submit');\n }\n }\n\n invalidate() {\n this.isValid = false;\n }\n\n checkValidity() {\n if (this.isReady && this.isValid) {\n return true;\n }\n return false;\n }\n\n execute() {\n if (this.isReady && this.invisible) {\n grecaptcha.execute(this.id);\n }\n }\n\n reset() {\n if (this.isReady) {\n grecaptcha.reset(this.id);\n this.isValid = false;\n }\n }\n\n getForm() {\n const closestForm = $(this.element).closest(Selector.FORM);\n return closestForm.length ? closestForm.get(0) : null;\n }\n\n static getRecaptchaFromForm(form) {\n if (mrUtil.isElement(form)) {\n const captchaElement = form.querySelector(Selector.DATA_RECAPTCHA);\n if (captchaElement) {\n const data = $(captchaElement).data(DATA_KEY);\n\n return data || null;\n }\n return null;\n }\n throw new TypeError('Form argument passed to getRecaptchaFromForm is not an element.');\n }\n\n static set apiReady(ready) {\n if (ready === true && apiReady === false) {\n mrUtil.forEach(Recaptchav2.instances, (index, instance) => {\n instance.init();\n });\n }\n apiReady = true;\n }\n\n static jQueryInterface() {\n return this.each(function jqEachRecaptchav2() {\n const $element = $(this);\n let data = $element.data(DATA_KEY);\n if (!data) {\n data = new Recaptchav2(this);\n $element.data(DATA_KEY, data);\n }\n });\n }\n }\n\n window.mrRecaptchav2Init = () => {\n mrRecaptchav2.apiReady = true;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Initialise API javascript if recaptcha widgets are found\n * ------------------------------------------------------------------------\n */\n\n $(document).ready(() => {\n const Recaptchav2Elements = $.makeArray($(Selector.DATA_RECAPTCHA));\n if (Recaptchav2Elements.length > 0) {\n mrUtil.getScript(RemoteScript.RECAPTCHAV2);\n\n /* eslint-disable no-plusplus */\n for (let i = Recaptchav2Elements.length; i--;) {\n const $Recaptchav2 = $(Recaptchav2Elements[i]);\n Recaptchav2.jQueryInterface.call($Recaptchav2, $Recaptchav2.data());\n }\n }\n });\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n /* eslint-disable no-param-reassign */\n $.fn[NAME] = Recaptchav2.jQueryInterface;\n $.fn[NAME].Constructor = Recaptchav2;\n $.fn[NAME].noConflict = function Recaptchav2NoConflict() {\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n return Recaptchav2.jQueryInterface;\n };\n /* eslint-enable no-param-reassign */\n\n return Recaptchav2;\n})(jQuery);\n\nexport default mrRecaptchav2;\n","//\n//\n// form-email.js\n//\n// Handles validation and sending email contact forms\n\nimport jQuery from 'jquery';\nimport mrUtil from './util';\nimport mrRecaptchav2 from './recaptcha-v2';\n\nconst mrFormEmail = (($) => {\n // Check mrUtil is present and correct version\n if (!(mrUtil && mrUtil.version >= '1.2.0')) {\n throw new Error('mrUtil >= version 1.2.0 is required.');\n }\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'mrFormEmail';\n const VERSION = '1.0.0';\n const DATA_KEY = 'mr.formEmail';\n const EVENT_KEY = `.${DATA_KEY}`;\n const DATA_API_KEY = '.data-api';\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n const ClassName = {\n LOADING: 'btn-loading-animate',\n WAS_VALIDATED: 'was-validated',\n D_NONE: 'd-none',\n };\n\n const Attribute = {\n ACTION: 'action',\n DISABLED: 'disabled',\n FEEDBACK_DELAY: 'data-feedback-delay',\n SUCCESS_REDIRECT: 'data-success-redirect',\n };\n\n const Selector = {\n DATA_ATTR: 'form-email',\n DATA_FORM_EMAIL: '[data-form-email]',\n DATA_SUCCESS: '[data-success-message]',\n DATA_ERROR: '[data-error-message]',\n SUBMIT_BUTTON: 'button[type=\"submit\"]',\n SPAN: 'span',\n ALL_INPUTS: 'input,textarea,select',\n };\n\n const Event = {\n SENT: `sent${EVENT_KEY}`,\n LOAD_DATA_API: `load${EVENT_KEY}${DATA_API_KEY}`,\n SUBMIT: 'submit',\n };\n\n const Options = {\n LOADING_TEXT: 'data-loading-text',\n };\n\n const Default = {\n LOADING_TEXT: 'Sending',\n FORM_ACTION: 'forms/mail.php',\n FEEDBACK_DELAY: 5000,\n ERROR_TEXT: 'Form submission error',\n };\n\n const Status = {\n SUCCESS: 'success',\n ERROR: 'error',\n };\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class FormEmail {\n constructor(element) {\n this.form = element;\n this.action = this.form.getAttribute(Attribute.ACTION) || Default.FORM_ACTION;\n // Returns an object containing the feedback\n this.feedback = this.getFeedbackElements();\n // Get any recaptcha instances in the form - returns array of instances or null\n this.getRecaptcha();\n // Get submit button, inner span and loading text.\n this.initSubmitButton();\n // const $element = $(element);\n this.setSubmitEvent();\n }\n\n // getters\n\n static get VERSION() {\n return VERSION;\n }\n\n submitForm() {\n // Hide feedback mesages for fresh submit\n this.hideAllFeedback();\n // Submit form if validateForm returns true\n if (this.validateForm()) {\n this.ajaxSubmit();\n }\n }\n\n validateForm() {\n let formIsValid = this.form.checkValidity();\n\n if (this.recaptcha) {\n if (this.recaptcha.invisible) {\n if (formIsValid && !this.recaptcha.checkValidity()) {\n this.recaptcha.execute();\n return false;\n }\n // invalidate if captcha is found and is not valid, otherwise keep original value\n } else if (this.recaptcha.checkValidity() === false) {\n formIsValid = false;\n }\n }\n if (!formIsValid) {\n // Cancel timeout so error message will stay shown\n clearTimeout(this.feedbackTimeout);\n // Allow BS validation styles to take effect\n this.form.classList.add(ClassName.WAS_VALIDATED);\n this.showFeedback(Status.ERROR, this.validationErrorMessage);\n return false;\n }\n this.form.classList.remove(ClassName.WAS_VALIDATED);\n return true;\n }\n\n ajaxSubmit() {\n const $form = $(this.form);\n const formData = $form.serializeArray();\n formData.push({ name: 'url', value: window.location.href });\n jQuery.ajax({\n context: this,\n data: formData,\n dataType: 'json',\n error: this.showFeedback,\n success: this.processResponse,\n type: 'POST',\n url: this.action,\n });\n this.toggleFormLoading(true);\n }\n\n initSubmitButton() {\n if (!this.submitButton) {\n this.submitButton = this.form.querySelector(Selector.SUBMIT_BUTTON);\n }\n this.submitButtonSpan = this.submitButton.querySelector(Selector.SPAN);\n this.loadingText = this.submitButton.getAttribute(Options.LOADING_TEXT)\n || Default.LOADING_TEXT;\n this.originalSubmitText = this.submitButtonSpan.textContent;\n return this.submitButton;\n }\n\n processResponse(response) {\n const success = response.status === Status.SUCCESS;\n // Form is no longer in a 'loading' state\n this.toggleFormLoading(false);\n // Recaptcha will need to be solved again\n if (this.recaptcha) { this.recaptcha.reset(); }\n // Trigger an event so users can fire Analytics scripts upon success\n $(this.form).trigger($.Event(Event.SENT));\n\n // Redirect upon success if data-attribute is set\n const successRedirect = this.form.getAttribute(Attribute.SUCCESS_REDIRECT);\n if (success && successRedirect && successRedirect !== '') {\n window.location = successRedirect;\n } else if (success) {\n this.form.reset();\n // Hide all feedback and hold a reference to the timeout\n // to cancel it when necessary.\n this.feedbackTimeout = setTimeout(() => this.hideAllFeedback(), this.feedbackDelay);\n }\n // Show ERROR feedback message if not redirecting\n if (!successRedirect) { this.showFeedback(response.status, response.message); }\n\n // Detailed error message will be shown in Console if provided\n if (response.errorDetail) {\n /* eslint-disable no-console */\n console.error(response.errorName || Default.ERROR_TEXT,\n response.errorDetail.indexOf('{') === 0\n ? JSON.parse(response.errorDetail)\n : response.errorDetail);\n /* eslint-enable no-console */\n }\n }\n\n showFeedback(status, text, errorHTTP) {\n // Form is no longer in a 'loading' state\n this.toggleFormLoading(false);\n // If this is an ajax error from jQuery, 'status' will be\n // an object with statusText property\n if (typeof status === 'object' && status.statusText) {\n clearTimeout(this.feedbackTimeout);\n this.feedback.error.innerHTML = `${errorHTTP || text}: \"${this.action}\" (${status.status} ${text})`;\n this.feedback.error.classList.remove(ClassName.D_NONE);\n } else {\n this.feedback[status].innerHTML = text;\n this.feedback[status].classList.remove(ClassName.D_NONE);\n }\n }\n\n hideAllFeedback() {\n this.feedback.success.classList.add(ClassName.D_NONE);\n this.feedback.error.classList.add(ClassName.D_NONE);\n }\n\n getFeedbackElements() {\n if (!this.feedback) {\n this.feedback = {\n success: this.form.querySelector(Selector.DATA_SUCCESS),\n error: this.form.querySelector(Selector.DATA_ERROR),\n };\n // Store the error alert's original text to be used as validation error message\n this.validationErrorMessage = this.feedback.error.innerHTML;\n const feedbackDelay = this.form.getAttribute(Attribute.FEEDBACK_DELAY)\n || Default.FEEDBACK_DELAY;\n this.feedbackDelay = parseInt(feedbackDelay, 10);\n this.feedbackTimeout = null;\n }\n return this.feedback;\n }\n\n getRecaptcha() {\n if (this.form.querySelector(mrUtil.selector.RECAPTCHA)) {\n // Check mrUtil is present and correct version\n if (!(mrRecaptchav2)) {\n throw new Error('mrRecaptcha.js is required to handle the reCAPTCHA element in this form.');\n } else {\n // Returns an array of mrRecaptcha instances or null\n this.recaptcha = mrRecaptchav2.getRecaptchaFromForm(this.form);\n }\n }\n }\n\n toggleFormLoading(loading) {\n this.toggleSubmitButtonLoading(loading);\n FormEmail.toggleDisabled(this.form.querySelectorAll(Selector.ALL_INPUTS), loading);\n }\n\n toggleSubmitButtonLoading(loading) {\n this.toggleSubmitButtonText(loading);\n this.toggleSubmitButtonAnimation(loading);\n FormEmail.toggleDisabled(this.submitButton, loading);\n }\n\n toggleSubmitButtonAnimation(animate) {\n // If animate is true, add the class, else remove it.\n this.submitButton.classList[(animate ? 'add' : 'remove')](ClassName.LOADING);\n }\n\n toggleSubmitButtonText(loading) {\n // If loading, set text to loading text, else return to original text.\n this.submitButtonSpan.textContent = loading ? this.loadingText : this.originalSubmitText;\n }\n\n static toggleDisabled(elements, disabled) {\n // If loading, set text to loading text, else return to original text.\n mrUtil.forEach(elements, (index, element) => element[(disabled ? 'setAttribute' : 'removeAttribute')](Attribute.DISABLED, ''));\n }\n\n static getInstanceFromForm(form) {\n if (mrUtil.isElement(form)) {\n const data = $(form).data(DATA_KEY);\n return data || null;\n }\n throw new TypeError('Form argument passed to getInstanceFromForm is not an element.');\n }\n\n setSubmitEvent() {\n $(this.form).on(Event.SUBMIT, (event) => {\n event.preventDefault();\n this.submitForm();\n });\n }\n\n static jQueryInterface() {\n return this.each(function jqEachFormEmail() {\n const $element = $(this);\n let data = $element.data(DATA_KEY);\n if (!data) {\n data = new FormEmail(this);\n $element.data(DATA_KEY, data);\n }\n });\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Initialise by data attribute\n * ------------------------------------------------------------------------\n */\n\n $(window).on(Event.LOAD_DATA_API, () => {\n const FormEmailElements = $.makeArray($(Selector.DATA_FORM_EMAIL));\n\n /* eslint-disable no-plusplus */\n for (let i = FormEmailElements.length; i--;) {\n const $FormEmail = $(FormEmailElements[i]);\n FormEmail.jQueryInterface.call($FormEmail, $FormEmail.data());\n }\n });\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n /* eslint-disable no-param-reassign */\n $.fn[NAME] = FormEmail.jQueryInterface;\n $.fn[NAME].Constructor = FormEmail;\n $.fn[NAME].noConflict = function FormEmailNoConflict() {\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n return FormEmail.jQueryInterface;\n };\n /* eslint-enable no-param-reassign */\n\n return FormEmail;\n})(jQuery);\n\nexport default mrFormEmail;\n","//\n//\n// ion-rangeslider.js\n//\n// Initialize the Ion rangeSlider plugin\n\nimport jQuery from 'jquery';\nimport mrUtil from './util';\nimport 'ion-rangeslider';\n\nconst mrIonRangeSlider = (($) => {\n /**\n * Check for Ion rangeSlider dependency\n * https://github.com/IonDen/ion.rangeSlider\n */\n if (typeof $.fn.ionRangeSlider !== 'function') {\n throw new Error('mrIonRangeSlider requires ion.rangeSlider.js (https://github.com/IonDen/ion.rangeSlider)');\n }\n\n // Check mrUtil is present and correct version\n if (!(mrUtil && mrUtil.version >= '1.2.0')) {\n throw new Error('mrUtil >= version 1.2.0 is required.');\n }\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'mrIonRangeSlider';\n const VERSION = '1.0.0';\n const DATA_KEY = 'mr.ionRangeSlider';\n const EVENT_KEY = `.${DATA_KEY}`;\n const DATA_API_KEY = '.data-api';\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n const ION_RANGE_SLIDER_KEY = 'ionRangeSlider';\n\n const Event = {\n LOAD_DATA_API: `load${EVENT_KEY}${DATA_API_KEY}`,\n CHANGE: 'input',\n };\n\n const Selector = {\n DATA_ATTR: 'ion-rangeslider',\n DATA_ION_RANGESLIDER: '[data-ion-rangeslider]',\n INPUT: 'INPUT',\n TEXT: 'text',\n };\n\n const Options = {\n SKIN_DEFAULT: 'theme',\n };\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class IonRangeSlider {\n constructor(element) {\n const $element = $(element);\n this.options = $element.data();\n this.element = element;\n this.fromElement = null;\n this.toElement = null;\n this.unitElement = null;\n this.initRangeSlider();\n }\n\n // getters\n\n static get VERSION() {\n return VERSION;\n }\n\n initRangeSlider() {\n const { options } = this;\n if (options.fromSelector) {\n this.fromElement = document.querySelectorAll(options.fromSelector);\n this.setFromUpdateEvent(this.fromElement);\n }\n if (options.toSelector) {\n this.toElement = document.querySelectorAll(options.toSelector);\n this.setToUpdateEvent(this.toElement);\n }\n if (options.unitSelector && options.unitSingle && options.unitPlural) {\n this.unitElement = document.querySelectorAll(options.unitSelector);\n }\n\n $(this.element).ionRangeSlider({\n skin: Options.SKIN_DEFAULT,\n onStart: mrUtil.getFuncFromString(options.onStart),\n onFinish: mrUtil.getFuncFromString(options.onFinish),\n onChange: this.handleChange,\n scope: this,\n onUpdate: mrUtil.getFuncFromString(options.onUpdate),\n });\n this.rangeSlider = $(this.element).data(ION_RANGE_SLIDER_KEY);\n }\n\n // HandleChange then also calls the user's callback\n handleChange(data) {\n if (this.fromElement && this.fromElement.length > 0) {\n mrIonRangeSlider.updateValue(this.fromElement, data.from_value || data.from);\n }\n if (this.toElement && this.toElement.length > 0) {\n mrIonRangeSlider.updateValue(this.toElement, data.to_value || data.to);\n }\n if (this.unitElement && this.unitElement.length > 0) {\n const value = parseInt(data.from_value, 10) || data.value;\n mrIonRangeSlider.updateValue(this.unitElement, value > 1\n ? this.options.unitPlural\n : this.options.unitSingle);\n }\n\n const userChangeFunction = mrUtil.getFuncFromString(this.options.onChange);\n if (userChangeFunction) {\n userChangeFunction(data);\n }\n }\n\n // Takes a collection of \"To\" elements and attaches\n // a change event handler to update the rangeslider when user inputs a value\n setToUpdateEvent(collection) {\n mrUtil.forEach(collection, (index, element) => {\n if (element.tagName.toUpperCase() === Selector.INPUT\n && element.type === Selector.TEXT) {\n element.addEventListener(Event.CHANGE, () => {\n this.rangeSlider.update({ to: element.value });\n });\n }\n });\n }\n\n // Takes a collection of \"From\" elements and attaches\n // a change event handler to update the rangeslider when user inputs a value\n setFromUpdateEvent(collection) {\n mrUtil.forEach(collection, (index, element) => {\n if (element.tagName.toUpperCase() === Selector.INPUT\n && element.type === Selector.TEXT) {\n element.addEventListener(Event.CHANGE, () => {\n this.rangeSlider.update({ from: element.value });\n });\n }\n });\n }\n\n static updateValue(collection, value) {\n mrUtil.forEach(collection, (index, element) => {\n const updateElement = element;\n // If element is an input, set the value instead of textContent\n const updateMethod = element.tagName.toUpperCase() === Selector.INPUT\n ? 'value' : 'textContent';\n updateElement[updateMethod] = value;\n });\n }\n\n static jQueryInterface() {\n return this.each(function jqEachIonRangeSlider() {\n const $element = $(this);\n let data = $element.data(DATA_KEY);\n if (!data) {\n data = new IonRangeSlider(this);\n $element.data(DATA_KEY, data);\n }\n });\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Initialise by data attribute\n * ------------------------------------------------------------------------\n */\n\n $(window).on(Event.LOAD_DATA_API, () => {\n const ionRangeSliderElements = $.makeArray($(Selector.DATA_ION_RANGESLIDER));\n\n /* eslint-disable no-plusplus */\n for (let i = ionRangeSliderElements.length; i--;) {\n const $ionRangeSlider = $(ionRangeSliderElements[i]);\n IonRangeSlider.jQueryInterface.call($ionRangeSlider, $ionRangeSlider.data());\n }\n });\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n /* eslint-disable no-param-reassign */\n $.fn[NAME] = IonRangeSlider.jQueryInterface;\n $.fn[NAME].Constructor = IonRangeSlider;\n $.fn[NAME].noConflict = function IonRangeSliderNoConflict() {\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n return IonRangeSlider.jQueryInterface;\n };\n /* eslint-enable no-param-reassign */\n\n return IonRangeSlider;\n})(jQuery);\n\nexport default mrIonRangeSlider;\n","//\n//\n// isotope.js\n//\n// Initialize the isotope plugin for filtering\n\n\nimport jQuery from 'jquery';\nimport Isotope from 'isotope-layout';\nimport mrUtil from './util';\n\nconst mrIsotope = (($) => {\n /**\n * Check for isotope dependency\n * isotope - https://github.com/metafizzy/isotope\n */\n if (typeof Isotope === 'undefined') {\n throw new Error('mrIsotope requires isotope.pkgd.js (https://github.com/metafizzy/isotope)');\n }\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'mrIsotope';\n const VERSION = '1.0.0';\n const DATA_KEY = 'mr.isotope';\n const EVENT_KEY = `.${DATA_KEY}`;\n const DATA_API_KEY = '.data-api';\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n const Css = {\n ACTIVE: 'active',\n };\n\n const Event = {\n LOAD_DATA_API: `load${EVENT_KEY}${DATA_API_KEY}`,\n FILTER_CLICK: 'click touchstart',\n SORTER_CLICK: 'click touchstart',\n };\n\n const Options = {\n DEFAULT_LAYOUT: 'masonry',\n ORIGINAL_ORDER: 'original-order',\n };\n\n const Selector = {\n FILTER_INITIALISED: '.js-filter-inited',\n DATA_ATTR: 'isotope',\n ISOTOPE_ID: 'data-isotope-id',\n DATA_ISOTOPE_COLLECTION: '[data-isotope-collection]',\n DATA_ISOTOPE_ITEM: '[data-isotope-item]',\n DATA_ISOTOPE_FILTERS: '[data-isotope-filters]',\n DATA_ISOTOPE_SORTERS: '[data-isotope-sorters]',\n CATEGORY: 'data-category',\n FILTER: 'data-filter',\n SORTER: 'data-sort',\n PRIMARY_SORTER: 'data-primary-sort',\n SECOND_SORTER: 'data-secondary-sort',\n SORT_SELECTOR: 'data-sort-selector',\n DATA_CATEGORY: '[data-category]',\n SORT_ASCENDING: 'data-sort-ascending',\n FILTER_ALL: '*',\n };\n\n // returns a selector string for filterable elements matching the provided category\n function getCategoryFilter(filterBy) {\n return filterBy && filterBy !== Selector.FILTER_ALL ? `[${Selector.CATEGORY}*=\"${filterBy}\"]` : Selector.FILTER_ALL;\n }\n // returns a nodelist of all filter links matching the provided isotope ID\n function getFilters(isotopeId, exclude) {\n const excludeSelector = exclude ? `:not(${exclude})` : '';\n const filters = document.querySelectorAll(`${Selector.DATA_ISOTOPE_FILTERS}[${Selector.ISOTOPE_ID}=\"${isotopeId}\"] [${Selector.FILTER}]${excludeSelector}`);\n return filters;\n }\n // returns a nodelist of all sorter links matching the provided isotope ID\n function getSorters(isotopeId) {\n return document.querySelectorAll(`${Selector.DATA_ISOTOPE_SORTERS}[${Selector.ISOTOPE_ID}=\"${isotopeId}\"] [${Selector.SORTER}][${Selector.SORT_SELECTOR}],\n ${Selector.DATA_ISOTOPE_SORTERS}[${Selector.ISOTOPE_ID}=\"${isotopeId}\"] [${Selector.SORTER}][${Selector.PRIMARY_SORTER}][${Selector.SECOND_SORTER}]`);\n }\n // returns a nodelist of all sorter links matching the provided sort value\n function getSorter(isotopeId, sortValue) {\n return document.querySelectorAll(`${Selector.DATA_ISOTOPE_SORTERS}[${Selector.ISOTOPE_ID}=\"${isotopeId}\"] [${Selector.SORTER}=\"${sortValue}\"]`);\n }\n // returns a nodelist of all filter links matching the provided filter value\n function getFilter(isotopeId, filter) {\n return document.querySelectorAll(`${Selector.DATA_ISOTOPE_FILTERS}[${Selector.ISOTOPE_ID}=\"${isotopeId}\"] [${Selector.FILTER}=\"${filter}\"]`);\n }\n // sets active class of provided elements on or off\n function toggleActive(filters, active) {\n if (filters) {\n mrUtil.forEach(filters, (index, filter) => {\n if (filter && typeof filter.classList !== typeof undefined) {\n if (active) {\n filter.classList.add(Css.ACTIVE);\n } else { filter.classList.remove(Css.ACTIVE); }\n }\n });\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class IsotopeWrapper {\n constructor(element) {\n const $element = $(element);\n const attributes = $element.data();\n\n this.element = element;\n this.attributes = attributes;\n this.filters = {};\n this.sorters = {};\n this.activeFilter = null;\n this.activeSorter = null;\n this.isotope = null;\n\n this.options = {};\n this.options.getSortData = {};\n this.options.sortAscending = {};\n\n this.initIsotope();\n this.initSorters();\n this.initFilters();\n }\n\n // getters\n\n static get VERSION() {\n return VERSION;\n }\n\n initFilters() {\n // Get all filter links\n const filters = getFilters(this.attributes.isotopeId, Selector.FILTER_INITIALISED);\n mrUtil.forEach(filters, (index, filter) => {\n const filterValue = filter.attributes[Selector.FILTER]\n && filter.attributes[Selector.FILTER].value;\n\n // Find all other filters matching this value to be de/activated on click\n this.filters[filterValue] = getFilter(this.attributes.isotopeId, filterValue);\n // Set up filter click event\n $(filter).on(Event.FILTER_CLICK, (event) => {\n if (event.preventDefault) { event.preventDefault(); }\n // Activate appropriate links\n toggleActive(this.activeFilter, false);\n toggleActive(this.filters[filterValue], true);\n this.activeFilter = filters;\n // Get selectorified filter value unless value is '*' (* does not need to be a selector)\n this.options.filter = filterValue === '*' ? filterValue : getCategoryFilter(filterValue);\n // Update isotope with current filter settings\n this.isotope.arrange(this.options);\n });\n // Add FILTER_INITIALISED class\n // just to make distinguishing old and new filters easier\n filter.classList.add(Selector.FILTER_INITIALISED);\n });\n }\n\n initSorters() {\n // Get all sorters linked to current isotope-id\n const sorters = getSorters(this.attributes.isotopeId);\n const defaultSort = this.attributes.defaultSort || Options.ORIGINAL_ORDER;\n\n mrUtil.forEach(sorters, (index, sorter) => {\n // Get options from attributes\n // Done this way for brevity (previous way was too wordy)\n const sa = sorter.attributes;\n const ss = sa[Selector.SORTER];\n const ssel = sa[Selector.SORT_SELECTOR];\n const asc = sa[Selector.SORT_ASCENDING];\n const pri = sa[Selector.PRIMARY_SORTER];\n const sec = sa[Selector.SECOND_SORTER];\n\n // Extract options from attributes\n const sortValue = ss && ss.value;\n const sortSelector = ssel && ssel.value;\n // If secondSort is set, pass in an array rather than a single sort value\n const arraySort = (pri && pri.value && sec && sec.value) ? [pri.value, sec.value] : null;\n const sortAscending = !(asc && asc.value && asc.value === 'false');\n\n // Store list of other sorters matching this value to be de/activated on click\n this.sorters[sortValue] = getSorter(this.attributes.isotopeId, sortValue);\n\n // Set up sorters click event for this one sorter\n $(sorter).on(Event.SORTER_CLICK, (event) => {\n if (event.preventDefault) { event.preventDefault(); }\n // Switch active class on sorter links\n toggleActive(this.activeSorter, false);\n toggleActive(this.sorters[sortValue], true);\n this.activeSorter = this.sorters[sortValue];\n // Pass in the arraySort (primary/secondary) array if it exists\n // otherwise use clicked sortValue\n this.options.sortBy = arraySort || sortValue;\n // Update isotope with curent options\n this.isotope.arrange(this.options);\n });\n // Set sortAscending object with current sortAscending value\n this.options.sortAscending[sortValue] = sortAscending;\n // Only set sortData in isotope if this is a unique sorting ID, not for\n // array sorts (primary/secondary) as they simply use an array to\n // reference existing sort configs\n if ((sortValue !== Options.ORIGINAL_ORDER) && !arraySort) {\n // Set the sort object in isotope options (will be reinitialised later)\n // Won't be added as a new sortData entry if secondSort is active\n this.options.getSortData[sortValue] = sortSelector;\n }\n });\n // Set sorting order to default if it exists\n this.options.sortBy = defaultSort;\n // Set default sorter to active\n this.activeSorter = getSorter(this.attributes.isotopeId, defaultSort);\n toggleActive(this.activeSorter, true);\n // Update isotope with collected sorter data\n this.isotope.updateSortData();\n // Update isotope with current sort options\n this.isotope.arrange(this.options);\n }\n\n initIsotope() {\n // Get hash filter from URL\n let hashFilter = window.location.hash.replace('#', '');\n hashFilter = hashFilter !== '' && !this.attributes.ignoreHash ? hashFilter : null;\n // Determine default filter\n const defaultFilter = hashFilter || this.attributes.defaultFilter || Selector.FILTER_ALL;\n const defaultFilterSelector = getCategoryFilter(defaultFilter);\n // Default to true, unless found to be explicitly false\n const defaultSortAscending = !this.attributes.sortAscending === false;\n\n // Setup initial config\n this.options.itemSelector = Selector.DATA_ISOTOPE_ITEM;\n this.options.layoutMode = this.attributes.layoutMode || Options.DEFAULT_LAYOUT;\n this.options.filter = defaultFilterSelector;\n this.options.sortAscending[Options.ORIGINAL_ORDER] = defaultSortAscending;\n this.isotope = new Isotope(this.element, this.options);\n this.activeFilter = getFilter(this.attributes.isotopeId, defaultFilter);\n toggleActive(this.activeFilter, true);\n }\n\n static jQueryInterface() {\n return this.each(function jqEachIsotope() {\n const $element = $(this);\n let data = $element.data(DATA_KEY);\n if (!data) {\n data = new IsotopeWrapper(this);\n $element.data(DATA_KEY, data);\n }\n });\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Initialise by data attribute\n * ------------------------------------------------------------------------\n */\n\n $(window).on(Event.LOAD_DATA_API, () => {\n const isotopeElements = $.makeArray($(Selector.DATA_ISOTOPE_COLLECTION));\n\n /* eslint-disable no-plusplus */\n for (let i = isotopeElements.length; i--;) {\n const $isotope = $(isotopeElements[i]);\n IsotopeWrapper.jQueryInterface.call($isotope, $isotope.data());\n }\n });\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n /* eslint-disable no-param-reassign */\n $.fn[NAME] = IsotopeWrapper.jQueryInterface;\n $.fn[NAME].Constructor = IsotopeWrapper;\n $.fn[NAME].noConflict = function IsotopeWrapperNoConflict() {\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n return IsotopeWrapper.jQueryInterface;\n };\n /* eslint-enable no-param-reassign */\n\n return IsotopeWrapper;\n})(jQuery);\n\nexport default mrIsotope;\n","//\n// jarallax.js\n//\n\n// Closing an alert changes height of document, so readjust position of parallax elements\n\nimport jQuery from 'jquery';\nimport jarallax from 'jarallax';\n\n(($) => {\n if (typeof jarallax === 'function') {\n $('.alert-dismissible').on('closed.bs.alert', () => {\n jarallax(document.querySelectorAll('[data-jarallax]'), 'onScroll');\n });\n\n $(document).on('resized.mr.overlayNav', () => {\n jarallax(document.querySelectorAll('[data-jarallax]'), 'onResize');\n });\n\n jarallax(document.querySelectorAll('[data-jarallax]'), {\n disableParallax: /iPad|iPhone|iPod|Android/,\n disableVideo: /iPad|iPhone|iPod|Android/,\n });\n }\n})(jQuery);\n","const mrMapStyle = [\n {\n featureType: 'administrative.country',\n elementType: 'labels.text',\n stylers: [{ lightness: '29' }],\n },\n {\n featureType: 'administrative.province',\n elementType: 'labels.text.fill',\n stylers: [{ lightness: '-12' }, { color: '#796340' }],\n },\n {\n featureType: 'administrative.locality',\n elementType: 'labels.text.fill',\n stylers: [{ lightness: '15' }, { saturation: '15' }],\n },\n {\n featureType: 'landscape.man_made',\n elementType: 'geometry',\n stylers: [{ visibility: 'on' }, { color: '#fbf5ed' }],\n },\n {\n featureType: 'landscape.natural',\n elementType: 'geometry',\n stylers: [{ visibility: 'on' }, { color: '#fbf5ed' }],\n },\n {\n featureType: 'poi',\n elementType: 'labels',\n stylers: [{ visibility: 'off' }],\n },\n {\n featureType: 'poi.attraction',\n elementType: 'all',\n stylers: [{ visibility: 'on' }, { lightness: '30' }, { saturation: '-41' }, { gamma: '0.84' }],\n },\n {\n featureType: 'poi.attraction',\n elementType: 'labels',\n stylers: [{ visibility: 'on' }],\n },\n {\n featureType: 'poi.business',\n elementType: 'all',\n stylers: [{ visibility: 'off' }],\n },\n {\n featureType: 'poi.business',\n elementType: 'labels',\n stylers: [{ visibility: 'off' }],\n },\n {\n featureType: 'poi.medical',\n elementType: 'geometry',\n stylers: [{ color: '#fbd3da' }],\n },\n {\n featureType: 'poi.medical',\n elementType: 'labels',\n stylers: [{ visibility: 'on' }],\n },\n {\n featureType: 'poi.park',\n elementType: 'geometry',\n stylers: [{ color: '#b0e9ac' }, { visibility: 'on' }],\n },\n {\n featureType: 'poi.park',\n elementType: 'labels',\n stylers: [{ visibility: 'on' }],\n },\n {\n featureType: 'poi.park',\n elementType: 'labels.text.fill',\n stylers: [{ hue: '#68ff00' }, { lightness: '-24' }, { gamma: '1.59' }],\n },\n {\n featureType: 'poi.sports_complex',\n elementType: 'all',\n stylers: [{ visibility: 'on' }],\n },\n {\n featureType: 'poi.sports_complex',\n elementType: 'geometry',\n stylers: [{ saturation: '10' }, { color: '#c3eb9a' }],\n },\n {\n featureType: 'road',\n elementType: 'geometry.stroke',\n stylers: [{ visibility: 'on' }, { lightness: '30' }, { color: '#e7ded6' }],\n },\n {\n featureType: 'road',\n elementType: 'labels',\n stylers: [{ visibility: 'on' }, { saturation: '-39' }, { lightness: '28' }, { gamma: '0.86' }],\n },\n {\n featureType: 'road.highway',\n elementType: 'geometry.fill',\n stylers: [{ color: '#ffe523' }, { visibility: 'on' }],\n },\n {\n featureType: 'road.highway',\n elementType: 'geometry.stroke',\n stylers: [{ visibility: 'on' }, { saturation: '0' }, { gamma: '1.44' }, { color: '#fbc28b' }],\n },\n {\n featureType: 'road.highway',\n elementType: 'labels',\n stylers: [{ visibility: 'on' }, { saturation: '-40' }],\n },\n {\n featureType: 'road.arterial',\n elementType: 'geometry',\n stylers: [{ color: '#fed7a5' }],\n },\n {\n featureType: 'road.arterial',\n elementType: 'geometry.fill',\n stylers: [{ visibility: 'on' }, { gamma: '1.54' }, { color: '#fbe38b' }],\n },\n {\n featureType: 'road.local',\n elementType: 'geometry.fill',\n stylers: [{ color: '#ffffff' }, { visibility: 'on' }, { gamma: '2.62' }, { lightness: '10' }],\n },\n {\n featureType: 'road.local',\n elementType: 'geometry.stroke',\n stylers: [{ visibility: 'on' }, { weight: '0.50' }, { gamma: '1.04' }],\n },\n {\n featureType: 'transit.station.airport',\n elementType: 'geometry.fill',\n stylers: [{ color: '#dee3fb' }],\n },\n {\n featureType: 'water',\n elementType: 'geometry',\n stylers: [{ saturation: '46' }, { color: '#a4e1ff' }],\n }];\n\nexport default mrMapStyle;\n","//\n//\n// maps.js\n//\n// an initializer for the Google Maps js API\n//\n\n/* global google */\nimport mrMapStyle from './maps-style';\n\nconst mrMaps = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'mrMaps';\n const VERSION = '1.1.0';\n const DATA_KEY = 'mr.maps';\n const EVENT_KEY = `.${DATA_KEY}`;\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n const Selector = {\n MAP: '[data-maps-api-key]',\n MARKER: 'div.map-marker',\n STYLE: 'div.map-style',\n MARKER_ADDRESS: 'data-address',\n MARKER_LATLNG: 'data-latlong',\n MARKER_IMAGE: 'data-marker-image',\n MARKER_TITLE: 'data-marker-title',\n INFOWindow: 'div.info-window',\n };\n\n const String = {\n MARKER_TITLE: '',\n };\n\n const Event = {\n MAP_LOADED: `loaded${EVENT_KEY}`,\n };\n\n const Default = {\n MARKER_IMAGE_URL: 'assets/img/map-marker.png',\n MAP: {\n disableDefaultUI: true,\n draggable: true,\n scrollwheel: false,\n zoom: 17,\n zoomControl: false,\n },\n };\n\n // mrMapStyle should be defined in a js file included prior to maps.js\n // The data should be an array of style overrides as per snazzymaps.com.\n Default.MAP.styles = typeof mrMapStyle !== typeof undefined ? mrMapStyle : undefined;\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Map {\n constructor(element) {\n // The current map element\n this.element = element;\n this.$element = $(element);\n this.markers = [];\n this.geocoder = new google.maps.Geocoder();\n this.markerElements = this.$element.find(Selector.MARKER);\n this.styleElement = this.$element.find(Selector.STYLE).first();\n this.initMap();\n this.createMarkers();\n }\n\n // version getter\n static get VERSION() {\n return VERSION;\n }\n\n static init() {\n const mapsOnPage = $.makeArray($(Selector.MAP));\n /* eslint-disable no-plusplus */\n for (let i = mapsOnPage.length; i--;) {\n const $map = $(mapsOnPage[i]);\n Map.jQueryInterface.call($map, $map.data());\n }\n }\n\n initMap() {\n const mapElement = this.element;\n const mapInstance = this.$element;\n const showZoomControl = typeof mapInstance.attr('data-zoom-controls') !== typeof undefined;\n const zoomControlPos = typeof mapInstance.attr('data-zoom-controls') !== typeof undefined\n ? mapInstance.attr('data-zoom-controls') : false;\n const latlong = typeof mapInstance.attr('data-latlong') !== typeof undefined\n ? mapInstance.attr('data-latlong') : false;\n const latitude = latlong\n ? parseFloat(latlong.substr(0, latlong.indexOf(','))) : false;\n const longitude = latlong\n ? parseFloat(latlong.substr(latlong.indexOf(',') + 1)) : false;\n\n const address = mapInstance.attr('data-address') || '';\n let mapOptions = null;\n // let markerOptions = null;\n const mapAo = {};\n\n // Attribute overrides - allows data attributes on the map to override global options\n try {\n mapAo.styles = this.styleElement.length\n ? JSON.parse(this.styleElement.html().trim()) : undefined;\n } catch (error) { throw new Error(error); }\n\n mapAo.zoom = mapInstance.attr('data-map-zoom')\n ? parseInt(mapInstance.attr('data-map-zoom'), 10) : undefined;\n mapAo.zoomControl = showZoomControl;\n mapAo.zoomControlOptions = zoomControlPos !== false\n ? { position: google.maps.ControlPosition[zoomControlPos] } : undefined;\n\n mapOptions = jQuery.extend({}, Default.MAP, mapAo);\n this.map = new google.maps.Map(mapElement, mapOptions);\n\n google.maps.event.addListenerOnce(this.map, 'center_changed', () => {\n // Map has been centered.\n const loadedEvent = $.Event(Event.MAP_LOADED, { map: this.map });\n mapInstance.trigger(loadedEvent);\n });\n\n if (typeof latitude !== typeof undefined && latitude !== '' && latitude !== false && typeof longitude !== typeof undefined && longitude !== '' && longitude !== false) {\n this.map.setCenter(new google.maps.LatLng(latitude, longitude));\n } else if (address !== '') {\n this.geocodeAddress(address, Map.centerMap, this, this.map);\n } else {\n throw new Error('No valid address or latitude/longitude pair provided for map.');\n }\n }\n\n geocodeAddress(address, callback, thisMap, args) {\n this.geocoder.geocode({ address }, (results, status) => {\n if (status !== google.maps.GeocoderStatus.OK) {\n throw new Error(`There was a problem geocoding the address \"${address}\".`);\n } else {\n callback(results, thisMap, args);\n }\n });\n }\n\n static centerMap(geocodeResults, thisMap) {\n thisMap.map.setCenter(geocodeResults[0].geometry.location);\n }\n\n static moveMarker(geocodeResults, thisMap, gMarker) {\n gMarker.setPosition(geocodeResults[0].geometry.location);\n }\n\n createMarkers() {\n Default.MARKER = {\n icon: {\n url: this.$element.attr(Selector.MARKER_IMAGE) || Default.MARKER_IMAGE_URL,\n scaledSize: new google.maps.Size(50, 50),\n },\n title: String.MARKER_TITLE,\n optimised: false,\n };\n\n this.markerElements.each((index, marker) => {\n let gMarker;\n const $marker = $(marker);\n const markerAddress = $marker.attr(Selector.MARKER_ADDRESS);\n const markerLatLng = $marker.attr(Selector.MARKER_LATLNG);\n const infoWindow = $marker.find(Selector.INFOWindow);\n const markerAo = { title: $marker.attr(Selector.MARKER_TITLE) };\n\n markerAo.icon = typeof $marker.attr(Selector.MARKER_IMAGE) !== typeof undefined ? {\n url: $marker.attr(Selector.MARKER_IMAGE),\n scaledSize: new google.maps.Size(50, 50),\n } : undefined;\n\n const markerOptions = jQuery.extend({}, Default.MARKER, markerAo);\n\n gMarker = new google.maps.Marker(jQuery.extend({}, markerOptions, {\n map: this.map,\n }));\n\n if (infoWindow.length) {\n const gInfoWindow = new google.maps.InfoWindow({\n content: infoWindow.first().html(),\n maxWidth: parseInt(infoWindow.attr('data-max-width') || '250', 10),\n });\n\n gMarker.addListener('click', () => {\n gInfoWindow.open(this.map, gMarker);\n });\n }\n\n // Set marker position\n if (markerLatLng) {\n if (/(-?\\d+(\\.\\d+)?),\\s*(-?\\d+(\\.\\d+)?)/.test(markerLatLng)) {\n gMarker.setPosition(new google.maps.LatLng(\n parseFloat(markerLatLng.substr(0, markerLatLng.indexOf(','))),\n parseFloat(markerLatLng.substr(markerLatLng.indexOf(',') + 1)),\n ));\n this.markers[index] = gMarker;\n }\n } else if (markerAddress) {\n this.geocodeAddress(markerAddress, Map.moveMarker, this, gMarker);\n this.markers[index] = gMarker;\n } else {\n gMarker = null;\n throw new Error(`Invalid data-address or data-latlong provided for marker ${index + 1}`);\n }\n });\n }\n\n static jQueryInterface() {\n return this.each(function jqEachMap() {\n const $element = $(this);\n let data = $element.data(DATA_KEY);\n if (!data) {\n data = new Map(this);\n $element.data(DATA_KEY, data);\n }\n });\n }\n }\n // END Class definition\n\n /**\n * ------------------------------------------------------------------------\n * Initialise by data attribute\n * ------------------------------------------------------------------------\n */\n\n // Load Google MAP API JS with callback to initialise when fully loaded\n if (document.querySelector('[data-maps-api-key]') && !document.querySelector('.gMapsAPI')) {\n if ($('[data-maps-api-key]').length) {\n const apiKey = $('[data-maps-api-key]:first').attr('data-maps-api-key') || '';\n if (apiKey !== '') {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = `https://maps.googleapis.com/maps/api/js?key=${apiKey}&callback=theme.mrMaps.init`;\n script.className = 'gMapsAPI';\n document.body.appendChild(script);\n }\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n /* eslint-disable no-param-reassign */\n $.fn[NAME] = Map.jQueryInterface;\n $.fn[NAME].Constructor = Map;\n $.fn[NAME].noConflict = function MapNoConflict() {\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n return Map.jQueryInterface;\n };\n /* eslint-enable no-param-reassign */\n\n return Map;\n})(jQuery);\n\nexport default mrMaps;\n","//\n//\n// overlay-nav.js\n//\n// Allows navs to overlay the first section of content by setting\n// style to pull content up and add padding to first sibling element\n\nimport jQuery from 'jquery';\nimport mrUtil from './util';\n\nconst mrOverlayNav = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'mrOverlayNav';\n const VERSION = '1.0.0';\n const DATA_KEY = 'mr.overlayNav';\n const EVENT_KEY = `.${DATA_KEY}`;\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n const Event = {\n RESIZE: `resize${EVENT_KEY}`,\n RESIZED: `resized${EVENT_KEY}`,\n IMAGE_LOAD: 'load',\n TOGGLE_SHOW: 'show.bs.collapse',\n TOGGLE_HIDE: 'hide.bs.collapse',\n NOTIFICATION_CLOSE: '',\n ALERT_CLOSE: 'close.bs.alert',\n };\n\n const Selector = {\n CONTAINER: 'body > div.navbar-container',\n OVERLAY_NAV: 'body > div.navbar-container > nav[data-overlay]',\n NAV: 'nav',\n OVERLAY_SECTION: '[data-overlay]',\n IMAGE: 'img',\n };\n\n const ClassName = {\n TOGGLED_SHOW: 'navbar-toggled-show',\n };\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class OverlayNav {\n constructor(element) {\n this.ticking = false; // Used to debounce resize event\n this.element = element;\n this.navHeight = this.getNavHeight();\n this.container = OverlayNav.getContainerElement();\n this.overlayElement = OverlayNav.getFirstOverlayElement();\n this.setImageLoadEvent();\n this.updateValues();\n this.setResizeEvent();\n this.setToggleEvent();\n }\n\n // getters\n\n static get VERSION() {\n return VERSION;\n }\n\n getNavHeight() {\n this.navHeight = this.element.getBoundingClientRect().height;\n }\n\n updateValues() {\n this.getNavHeight();\n this.updateContainer();\n this.updateOverlayElement();\n $(this.element).trigger($.Event(Event.RESIZED));\n }\n\n updateContainer() {\n if (!this.container) {\n return;\n }\n this.container.style.minHeight = `${this.navHeight}px`;\n this.container.style.marginBottom = `-${this.navHeight}px`;\n }\n\n updateOverlayElement() {\n if (!this.overlayElement) {\n return;\n }\n this.overlayElement.style.setProperty('padding-top', `${this.navHeight}px`, 'important');\n }\n\n setResizeEvent() {\n $(window).on(`${Event.RESIZE} ${Event.ALERT_CLOSE}`, () => {\n if (!this.ticking) {\n window.requestAnimationFrame(() => {\n this.updateValues();\n this.ticking = false;\n });\n this.ticking = true;\n }\n });\n }\n\n setToggleEvent() {\n $(this.container).on(`${Event.TOGGLE_SHOW} ${Event.TOGGLE_HIDE}`, (evt) => {\n const action = `${evt.type}.${evt.namespace}` === Event.TOGGLE_SHOW ? 'add' : 'remove';\n this.element.classList[action](ClassName.TOGGLED_SHOW);\n });\n }\n\n setImageLoadEvent() {\n const images = this.container.querySelectorAll(Selector.IMAGE);\n mrUtil.forEach(images, (index, image) => {\n image.addEventListener(Event.IMAGE_LOAD, () => this.updateValues());\n });\n }\n\n static getContainerElement() {\n if (!this.container) {\n this.container = document.querySelector(Selector.CONTAINER);\n }\n return this.container;\n }\n\n\n static getFirstOverlayElement() {\n return document.querySelector(`${Selector.OVERLAY_SECTION}:not(${Selector.NAV})`);\n }\n\n static jQueryInterface() {\n return this.each(function jqEachoverlayNav() {\n const $element = $(this);\n let data = $element.data(DATA_KEY);\n if (!data) {\n data = new OverlayNav(this);\n $element.data(DATA_KEY, data);\n }\n });\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Initialise by data attribute\n * ------------------------------------------------------------------------\n */\n\n $(document).ready(() => {\n const overlayNavElements = $.makeArray($(Selector.OVERLAY_NAV));\n\n /* eslint-disable no-plusplus */\n for (let i = overlayNavElements.length; i--;) {\n const $overlayNav = $(overlayNavElements[i]);\n OverlayNav.jQueryInterface.call($overlayNav, $overlayNav.data());\n }\n });\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n /* eslint-disable no-param-reassign */\n $.fn[NAME] = OverlayNav.jQueryInterface;\n $.fn[NAME].Constructor = OverlayNav;\n $.fn[NAME].noConflict = function overlayNavNoConflict() {\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n return OverlayNav.jQueryInterface;\n };\n /* eslint-enable no-param-reassign */\n\n return OverlayNav;\n})(jQuery);\n\nexport default mrOverlayNav;\n","//\n//\n// plyr.js\n//\n// Initialises the plyr video and audio player\n\nimport Plyr from 'plyr';\n\nPlyr.setup('[data-provider],.plyr');\n","//\n//\n// popovers.js\n//\n// In case popovers are used inside a tab structure;\n// this utility will close all popovers in the target tab or accordion when a tab is switched.\n\nimport jQuery from 'jquery';\n\n(($) => {\n $(document).on('hide.bs.tab', (evt) => { $($(evt.target).attr('href')).find('[data-toggle=\"popover\"]').popover('hide'); });\n $(document).on('hide.bs.collapse', (evt) => { $(evt.target).find('[data-toggle=\"popover\"]').popover('hide'); });\n})(jQuery);\n","//\n//\n// readingPosition.js\n//\n// Initialises the srollMonitor plugin and provides interface to watcher objects\n// for sticking elements to the top of viewport while scrolling\n\nimport scrollMonitor from 'scrollmonitor';\nimport mrUtil from './util';\n\nconst mrReadingPosition = (($) => {\n /**\n * Check for scrollMonitor dependency\n * scrollMonitor - https://github.com/stutrek/scrollMonitor\n */\n if (typeof scrollMonitor === 'undefined') {\n throw new Error('mrReadingPosition requires scrollMonitor.js (https://github.com/stutrek/scrollMonitor)');\n }\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'mrReadingPosition';\n const VERSION = '1.0.0';\n const DATA_KEY = 'mr.readingPosition';\n const EVENT_KEY = `.${DATA_KEY}`;\n const DATA_API_KEY = '.data-api';\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n const Css = {\n HIDDEN: 'reading-position-hidden',\n };\n\n const Event = {\n LOAD_DATA_API: `load${EVENT_KEY}${DATA_API_KEY}`,\n RESIZE: 'resize',\n SCROLL: 'scroll',\n };\n\n\n const Selector = {\n PROGRESS: 'progress.reading-position',\n DATA_ATTR: 'reading-position',\n DATA_READING_POSITION: '[data-reading-position]',\n VALUE: 'value',\n MAX: 'max',\n };\n\n const Value = {\n BAR_MAX: 100,\n BAR_MIN: 0,\n };\n\n const progressBars = document.querySelectorAll(Selector.PROGRESS);\n // const $window = $(window);\n // const $document = $(document);\n\n const getWindowHeight = () => Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0,\n );\n\n const getScrollPosition = () => (document.documentElement.scrollTop === 0\n ? document.body.scrollTop : document.documentElement.scrollTop)\n || 0;\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n class ReadingPosition {\n constructor(element) {\n this.progressBars = progressBars;\n this.element = element;\n this.top = 0;\n this.bottom = 0;\n this.height = 0;\n this.scrollLength = 0;\n this.articlePositionPercent = 0;\n this.ticking = false;\n this.inView = false;\n this.reading = false;\n this.initWatcher(element);\n this.initBarValues();\n this.setValue(getScrollPosition());\n this.setScrollEvent();\n this.setResizeEvent();\n }\n\n // get VERSION\n static get VERSION() {\n return VERSION;\n }\n\n initWatcher(element) {\n const watcher = scrollMonitor.create(element);\n this.watcher = watcher;\n this.recalculateAll();\n\n watcher.stateChange(() => {\n this.inView = watcher.isInViewport;\n this.reading = watcher.isAboveViewport && watcher.isFullyInViewport;\n this.toggleBars(this.reading);\n });\n }\n\n initBarValues() {\n mrUtil.forEach(this.progressBars, (index, bar) => {\n bar.setAttribute(Selector.MAX, Value.BAR_MAX);\n });\n }\n\n setValue(scrollPosition) {\n this.recalculatePercentage(scrollPosition);\n mrUtil.forEach(this.progressBars, (index, bar) => {\n bar.setAttribute(Selector.VALUE, this.articlePositionPercent);\n });\n }\n\n toggleBars(show) {\n mrUtil.forEach(this.progressBars, (index, bar) => {\n if (show) { bar.classList.remove(Css.HIDDEN); } else { bar.classList.add(Css.HIDDEN); }\n });\n }\n\n setScrollEvent() {\n window.addEventListener(Event.SCROLL, () => {\n const scrollPosition = getScrollPosition();\n\n if (!this.ticking && this.inView && this.reading) {\n window.requestAnimationFrame(() => {\n this.setValue(scrollPosition);\n this.ticking = false;\n });\n\n this.ticking = true;\n }\n });\n }\n\n setResizeEvent() {\n window.addEventListener(Event.RESIZE, () => this.recalculateAll());\n }\n\n recalculateAll() {\n this.watcher.recalculateLocation();\n this.top = this.watcher.top;\n this.bottom = this.watcher.bottom;\n this.height = this.watcher.height;\n // Scroll Length is the scrolling viewable area of the article\n // from top of article = top of window to bottom of article = bottom of window.\n this.scrollLength = this.height - getWindowHeight();\n // Position percent is how far the view is through the scrollable length in percentage.\n this.recalculatePercentage(getScrollPosition());\n }\n\n recalculatePercentage(scrollPosition) {\n this.articlePositionPercent = !scrollPosition ? 0\n : ((scrollPosition - this.top) / this.scrollLength) * 100;\n }\n\n static jQueryInterface() {\n return this.each(function jqEachReadingPosition() {\n const $element = $(this);\n let data = $element.data(DATA_KEY);\n if (!data) {\n data = new ReadingPosition(this);\n $element.data(DATA_KEY, data);\n }\n });\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Initialise by data attribute\n * ------------------------------------------------------------------------\n */\n\n $(window).on(Event.LOAD_DATA_API, () => {\n // Proceed to initialise only if a progress bar is found in the document\n if (progressBars.length === 0) {\n return;\n }\n\n // Gather articles and loop over, initialising ReadingPosition instance\n const readingPositionElements = $.makeArray($(Selector.DATA_READING_POSITION));\n /* eslint-disable no-plusplus */\n for (let i = readingPositionElements.length; i--;) {\n const $readingPosition = $(readingPositionElements[i]);\n ReadingPosition.jQueryInterface.call($readingPosition, $readingPosition.data());\n }\n });\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n /* eslint-disable no-param-reassign */\n $.fn[NAME] = ReadingPosition.jQueryInterface;\n $.fn[NAME].Constructor = ReadingPosition;\n $.fn[NAME].noConflict = function ReadingPositionNoConflict() {\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n return ReadingPosition.jQueryInterface;\n };\n /* eslint-enable no-param-reassign */\n\n return ReadingPosition;\n})(jQuery);\n\nexport default mrReadingPosition;\n","\n//\n//\n// smooth-scroll.js\n//\n// Initialises the smooth scroll plugin\n\nimport SmoothScroll from 'smooth-scroll';\nimport jQuery from 'jquery';\n\nconst mrSmoothScroll = (($) => {\n const smoothScroll = new SmoothScroll('a[data-smooth-scroll]',\n {\n offset: $('body').attr('data-smooth-scroll-offset')\n || 0,\n });\n return smoothScroll;\n})(jQuery);\n\nexport default mrSmoothScroll;\n","//\n//\n// sticky.js\n//\n// Initialises the srollMonitor plugin and provides interface to watcher objects\n// for sticking elements to the top of viewport while scrolling\n\nimport jQuery from 'jquery';\nimport scrollMonitor from 'scrollmonitor';\n\nconst mrSticky = (($) => {\n /**\n * Check for scrollMonitor dependency\n * scrollMonitor - https://github.com/stutrek/scrollMonitor\n */\n if (typeof scrollMonitor === 'undefined') {\n throw new Error('mrSticky requires scrollMonitor.js (https://github.com/stutrek/scrollMonitor)');\n }\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'mrSticky';\n const VERSION = '1.3.0';\n const DATA_KEY = 'mr.sticky';\n const EVENT_KEY = `.${DATA_KEY}`;\n const DATA_API_KEY = '.data-api';\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n const NO_OFFSET = 0;\n\n const ClassName = {\n FIXED_TOP: 'position-fixed',\n ABSOLUTE_BOTTOM: 'sticky-bottom',\n FIXED_BOTTOM: 'sticky-viewport-bottom',\n SCROLLED: 'scrolled',\n };\n\n const Css = {\n HEIGHT: 'min-height',\n WIDTH: 'max-width',\n SPACE_TOP: 'top',\n SPACE_BOTTOM: 'bottom',\n };\n\n const Event = {\n LOAD_DATA_API: `load${EVENT_KEY}${DATA_API_KEY}`,\n WINDOW_RESIZE: 'resize',\n ALERT_CLOSED: 'closed.bs.alert',\n };\n\n const Options = {\n BELOW_NAV: 'below-nav',\n TOP: 'top',\n BOTTOM: 'bottom',\n };\n\n const Selector = {\n DATA_ATTR: 'sticky',\n DATA_STICKY: '[data-sticky]',\n NAV_STICKY: 'body > div.navbar-container [data-sticky=\"top\"]',\n ALERT: '.alert-dismissible',\n };\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Sticky {\n constructor(element) {\n const $element = $(element);\n const stickyData = $element.data(Selector.DATA_ATTR);\n const stickyUntil = $element.closest('section') || null;\n this.element = element;\n this.stickBelowNav = stickyData === Options.BELOW_NAV;\n this.stickBottom = stickyData === Options.BOTTOM;\n this.stickyUntil = stickyUntil;\n this.updateNavProperties();\n this.isNavElement = $element.is(this.navElement);\n this.initWatcher($element);\n this.updateCss();\n this.setResizeEvent();\n // Run a calculation immediately to show sticky elements if page starts\n // at a half-scrolled position\n this.onWatcherChange($element);\n this.ticking = false; // for debouncing resize event with RequestAnimationFrame\n }\n\n // getters\n\n static get VERSION() {\n return VERSION;\n }\n\n initWatcher(element) {\n const $element = $(element);\n const notNavElement = !this.isNavElement;\n\n let offset = this.stickBelowNav\n && this.navIsSticky\n && notNavElement\n ? { top: this.navHeight } : NO_OFFSET;\n\n offset = this.stickBottom\n && notNavElement\n ? { bottom: -$element.outerHeight } : offset;\n\n const watcher = scrollMonitor.create(element, offset);\n // ensure that we're always watching the place the element originally was\n watcher.lock();\n\n const untilWatcher = this.stickyUntil !== null ? scrollMonitor.create(\n this.stickyUntil,\n { bottom: -(watcher.height + offset.top) },\n ) : null;\n\n\n this.watcher = watcher;\n this.untilWatcher = untilWatcher;\n this.navHeight = this.navHeight;\n\n // For navs that start at top, stick them immediately to avoid a jump\n if (this.isNavElement && watcher.top === 0 && !this.navIsAbsolute) {\n $element.addClass(ClassName.FIXED_TOP);\n }\n\n watcher.stateChange(() => {\n this.onWatcherChange($element);\n });\n\n if (untilWatcher !== null) {\n untilWatcher.exitViewport(() => {\n // If the element is in a section, it will scroll up with the section\n $element.addClass(ClassName.ABSOLUTE_BOTTOM);\n });\n\n untilWatcher.enterViewport(() => {\n $element.removeClass(ClassName.ABSOLUTE_BOTTOM);\n });\n }\n }\n\n onWatcherChange($element) {\n // Add fixed when element leaves via top of viewport or if nav is sitting at top\n $element.toggleClass(\n ClassName.FIXED_TOP,\n this.watcher.isAboveViewport\n || (!this.navIsAbsolute && !this.stickBottom\n && (this.isNavElement && this.watcher.top === 0)),\n );\n\n // Used to apply styles to the nav based on \"scrolled\" class\n // independedly of position-fixed because that class is used for more practical reasons\n // such as avoiding a jump on first scroll etc.\n $element.toggleClass(\n ClassName.SCROLLED,\n this.watcher.isAboveViewport\n && this.isNavElement\n && !this.stickBottom,\n );\n\n // Fix to bottom when element enters via bottom of viewport and has data-sticky=\"bottom\"\n $element.toggleClass(\n ClassName.FIXED_BOTTOM,\n (this.watcher.isFullyInViewport || this.watcher.isAboveViewport) && this.stickBottom,\n );\n\n if (!this.stickBottom) {\n $element.css(\n Css.SPACE_TOP,\n this.watcher.isAboveViewport\n && this.navIsSticky\n && this.stickBelowNav\n ? this.navHeight : NO_OFFSET,\n );\n }\n }\n\n setResizeEvent() {\n // Closing any alerts above the nav will mean we need to recalculate position.\n $(Selector.ALERT).on(Event.ALERT_CLOSED, () => {\n // An alert above the nav will cause odd sticky behaviour if\n // the alert is dismissed and nav position is not recalculated,\n // as scrollMonitor has locked the position of the watcher.\n // Unlock and recalculate if the nav is in the viewport during alert close event.\n if (this.watcher.isInViewport) {\n this.watcher.unlock();\n this.watcher.recalculateLocation();\n this.watcher.lock();\n }\n this.onResize();\n });\n\n $(window).on(Event.WINDOW_RESIZE, () => {\n this.onResize();\n });\n }\n\n onResize() {\n if (!this.ticking) {\n window.requestAnimationFrame(() => {\n this.updateCss();\n this.ticking = false;\n });\n this.ticking = true;\n }\n }\n\n updateCss() {\n const $element = $(this.element);\n\n // Fix width by getting parent's width to avoid element spilling out when pos-fixed\n $element.css(Css.WIDTH, $element.parent().width());\n\n this.updateNavProperties();\n\n const elemHeight = $element.outerHeight();\n const notNavElement = !this.isNavElement;\n\n // Set a min-height to prevent \"jumping\" when sticking to top\n // but not applied to the nav element itself unless it is overlay (absolute) nav\n if ((!this.navIsAbsolute && this.isNavElement) || notNavElement) {\n $element.parent().css(Css.HEIGHT, elemHeight);\n }\n\n if (this.navIsSticky && notNavElement) {\n $element.css(Css.HEIGHT, elemHeight);\n }\n }\n\n updateNavProperties() {\n const $navElement = this.navElement || $(Selector.NAV_STICKY).first();\n this.navElement = $navElement;\n this.navHeight = $navElement.outerHeight();\n this.navIsAbsolute = $navElement.css('position') === 'absolute';\n this.navIsSticky = $navElement.length > 0;\n }\n\n static jQueryInterface() {\n return this.each(function jqEachSticky() {\n const $element = $(this);\n let data = $element.data(DATA_KEY);\n if (!data) {\n data = new Sticky(this);\n $element.data(DATA_KEY, data);\n }\n });\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Initialise by data attribute\n * ------------------------------------------------------------------------\n */\n\n $(window).on(Event.LOAD_DATA_API, () => {\n const stickyElements = $.makeArray($(Selector.DATA_STICKY));\n\n /* eslint-disable no-plusplus */\n for (let i = stickyElements.length; i--;) {\n const $sticky = $(stickyElements[i]);\n Sticky.jQueryInterface.call($sticky, $sticky.data());\n }\n });\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n /* eslint-disable no-param-reassign */\n $.fn[NAME] = Sticky.jQueryInterface;\n $.fn[NAME].Constructor = Sticky;\n $.fn[NAME].noConflict = function StickyNoConflict() {\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n return Sticky.jQueryInterface;\n };\n /* eslint-enable no-param-reassign */\n\n return Sticky;\n})(jQuery);\n\nexport default mrSticky;\n","\nimport './aos';\nimport './background-images';\n//import mrCountdown from './countdown';\n//import mrCountup from './countup';\nimport mrDropdownGrid from './dropdown-grid';\nimport './fade-page';\nimport './flickity';\nimport mrFormEmail from './form-email';\nimport mrIonRangeSlider from './ion-rangeslider';\nimport mrIsotope from './isotope';\nimport './jarallax';\nimport mrMapsStyle from './maps-style';\nimport mrMaps from './maps';\nimport mrOverlayNav from './overlay-nav';\nimport './plyr';\nimport './popovers';\n//import './prism';\nimport mrReadingPosition from './reading-position';\nimport mrSmoothScroll from './smooth-scroll';\nimport mrSticky from './sticky';\n//import mrTwitterFetcher from './twitter-fetcher';\n//import mrTypedText from './typed-text';\nimport mrUtil from './util';\n\n(() => {\n if (typeof $ === 'undefined') {\n throw new TypeError('Medium Rare JavaScript requires jQuery. jQuery must be included before theme.js.');\n }\n})();\n\nexport {\n// mrCountdown,\n// mrCountup,\n mrDropdownGrid,\n mrFormEmail,\n mrIonRangeSlider,\n mrIsotope,\n mrMapsStyle,\n mrMaps,\n mrOverlayNav,\n mrReadingPosition,\n mrSmoothScroll,\n mrSticky,\n// mrTwitterFetcher,\n// mrTypedText,\n mrUtil,\n};\n"],"names":["AOS","init","once","$","document","documentElement","style","each","attachBg","img","src","attr","classes","get","classList","before","remove","jQuery","mrUtil","VERSION","Tagname","SCRIPT","Selector","RECAPTCHA","tooltip","selector","container","popover","toast","Util","version","activateIframeSrc","iframe","$iframe","idleIframeSrc","forEach","array","callback","scope","length","i","call","isElement","dedupArray","arr","reduce","p","c","id","JSON","stringify","temp","indexOf","out","push","obj","nodeType","getFuncFromString","funcName","context","findFunc","target","window","func","split","ns","shift","getScript","source","script","createElement","prior","getElementsByTagName","async","defer","onreadystatechange","_","isAbort","readyState","test","onload","undefined","parentNode","insertBefore","mrDropdownGrid","NAME","DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","fn","ESCAPE_KEYCODE","SPACE_KEYCODE","TAB_KEYCODE","ARROW_UP_KEYCODE","ARROW_DOWN_KEYCODE","RIGHT_MOUSE_BUTTON_WHICH","REGEXP_KEYDOWN","RegExp","ClassName","SHOW","Event","LOAD_DATA_API","RESIZE","HIDE","HIDDEN","SHOWN","CLICK","MOUSE_ENTER","MOUSE_LEAVE","CLICK_DATA_API","KEYDOWN_DATA_API","KEYUP_DATA_API","DATA_TOGGLE","FORM_CHILD","MENU","CONTAINER","CONTENT","NAVBAR_NAV","VISIBLE_ITEMS","Options","HOVER","BODY_HOVER","DropdownGrid","element","ticking","isActive","getOptions","parent","getParentFromElement","menu","getMenuElement","getContainerElement","content","getContentElement","isSubmenu","hasParentMenu","siblingMenus","getSiblingMenus","submenus","getSubmenus","hover","options","addEventListeners","setResizeEvent","getAttribute","body","toggle","event","getParentMenu","disabled","hasClass","DISABLED","togglingOff","togglingOn","clearMenus","type","relatedTarget","showEvent","trigger","isDefaultPrevented","closest","children","on","noop","focus","setAttribute","toggleClass","updatePosition","winWidth","windowWidth","innerWidth","getDimensionsFromElement","positionContainer","offsetLeft","positionContent","left","TypeError","leftValue","contentRect","contentWidth","width","parentContent","parentMenu","leftString","Math","round","requestAnimationFrame","querySelector","siblings","data","querySelectorAll","isParent","preventDefault","stopPropagation","rect","getBoundingClientRect","pageXOffset","clientLeft","specificToggle","which","toggles","index","clickEvent","dropdownMenu","tagName","contains","isSameNode","hideEvent","off","removeClass","jQueryInterface","config","jqEachDropdownGrid","$element","dataApiKeydownHandler","items","slice","e","ready","dropdownGridElements","makeArray","$dropdownGrid","Constructor","noConflict","DropdownGridNoConflict","ATTR_HREF","EVENT_CLICK","SELECTOR_FADE","EFFECT_DELAY","fadePage","getElementsByClassName","fadePageFunction","ctrlKey","shiftKey","metaKey","button","add","href","setTimeout","location","addEventListener","flickityInstance","find","instance","$instance","flickity","isInitActivated","mrRecaptchav2","Error","RECAPTCHA_CALLBACK","RemoteScript","RECAPTCHAV2","DATA_RECAPTCHA","FORM","INVISIBLE","instances","apiReady","Recaptchav2","form","getForm","isReady","isValid","invisible","size","innerHTML","replace","grecaptcha","render","sitekey","theme","badge","tabindex","validate","invalidate","checkValidity","execute","reset","closestForm","getRecaptchaFromForm","captchaElement","jqEachRecaptchav2","mrRecaptchav2Init","Recaptchav2Elements","$Recaptchav2","Recaptchav2NoConflict","mrFormEmail","LOADING","WAS_VALIDATED","D_NONE","Attribute","ACTION","FEEDBACK_DELAY","SUCCESS_REDIRECT","DATA_ATTR","DATA_FORM_EMAIL","DATA_SUCCESS","DATA_ERROR","SUBMIT_BUTTON","SPAN","ALL_INPUTS","SENT","SUBMIT","LOADING_TEXT","Default","FORM_ACTION","ERROR_TEXT","Status","SUCCESS","ERROR","FormEmail","action","feedback","getFeedbackElements","getRecaptcha","initSubmitButton","setSubmitEvent","submitForm","hideAllFeedback","validateForm","ajaxSubmit","formIsValid","recaptcha","clearTimeout","feedbackTimeout","showFeedback","validationErrorMessage","$form","formData","serializeArray","name","value","ajax","dataType","error","success","processResponse","url","toggleFormLoading","submitButton","submitButtonSpan","loadingText","originalSubmitText","textContent","response","status","successRedirect","feedbackDelay","message","errorDetail","console","errorName","parse","text","errorHTTP","statusText","parseInt","loading","toggleSubmitButtonLoading","toggleDisabled","toggleSubmitButtonText","toggleSubmitButtonAnimation","animate","elements","getInstanceFromForm","jqEachFormEmail","FormEmailElements","$FormEmail","FormEmailNoConflict","mrIonRangeSlider","ionRangeSlider","ION_RANGE_SLIDER_KEY","CHANGE","DATA_ION_RANGESLIDER","INPUT","TEXT","SKIN_DEFAULT","IonRangeSlider","fromElement","toElement","unitElement","initRangeSlider","fromSelector","setFromUpdateEvent","toSelector","setToUpdateEvent","unitSelector","unitSingle","unitPlural","skin","onStart","onFinish","onChange","handleChange","onUpdate","rangeSlider","updateValue","from_value","from","to_value","to","userChangeFunction","collection","toUpperCase","update","updateElement","updateMethod","jqEachIonRangeSlider","ionRangeSliderElements","$ionRangeSlider","IonRangeSliderNoConflict","mrIsotope","Isotope","Css","ACTIVE","FILTER_CLICK","SORTER_CLICK","DEFAULT_LAYOUT","ORIGINAL_ORDER","FILTER_INITIALISED","ISOTOPE_ID","DATA_ISOTOPE_COLLECTION","DATA_ISOTOPE_ITEM","DATA_ISOTOPE_FILTERS","DATA_ISOTOPE_SORTERS","CATEGORY","FILTER","SORTER","PRIMARY_SORTER","SECOND_SORTER","SORT_SELECTOR","DATA_CATEGORY","SORT_ASCENDING","FILTER_ALL","getCategoryFilter","filterBy","getFilters","isotopeId","exclude","excludeSelector","filters","getSorters","getSorter","sortValue","getFilter","filter","toggleActive","active","IsotopeWrapper","attributes","sorters","activeFilter","activeSorter","isotope","getSortData","sortAscending","initIsotope","initSorters","initFilters","filterValue","arrange","defaultSort","sorter","sa","ss","ssel","asc","pri","sec","sortSelector","arraySort","sortBy","updateSortData","hashFilter","hash","ignoreHash","defaultFilter","defaultFilterSelector","defaultSortAscending","itemSelector","layoutMode","jqEachIsotope","isotopeElements","$isotope","IsotopeWrapperNoConflict","jarallax","disableParallax","disableVideo","mrMapStyle","featureType","elementType","stylers","lightness","color","saturation","visibility","gamma","hue","weight","mrMaps","MAP","MARKER","STYLE","MARKER_ADDRESS","MARKER_LATLNG","MARKER_IMAGE","MARKER_TITLE","INFOWindow","String","MAP_LOADED","MARKER_IMAGE_URL","disableDefaultUI","draggable","scrollwheel","zoom","zoomControl","styles","Map","markers","geocoder","google","maps","Geocoder","markerElements","styleElement","first","initMap","createMarkers","mapsOnPage","$map","mapElement","mapInstance","showZoomControl","zoomControlPos","latlong","latitude","parseFloat","substr","longitude","address","mapOptions","mapAo","html","trim","zoomControlOptions","position","ControlPosition","extend","map","addListenerOnce","loadedEvent","setCenter","LatLng","geocodeAddress","centerMap","thisMap","args","geocode","results","GeocoderStatus","OK","geocodeResults","geometry","moveMarker","gMarker","setPosition","icon","scaledSize","Size","title","optimised","marker","$marker","markerAddress","markerLatLng","infoWindow","markerAo","markerOptions","Marker","gInfoWindow","InfoWindow","maxWidth","addListener","open","jqEachMap","apiKey","className","appendChild","MapNoConflict","mrOverlayNav","RESIZED","IMAGE_LOAD","TOGGLE_SHOW","TOGGLE_HIDE","NOTIFICATION_CLOSE","ALERT_CLOSE","OVERLAY_NAV","NAV","OVERLAY_SECTION","IMAGE","TOGGLED_SHOW","OverlayNav","navHeight","getNavHeight","overlayElement","getFirstOverlayElement","setImageLoadEvent","updateValues","setToggleEvent","height","updateContainer","updateOverlayElement","minHeight","marginBottom","setProperty","evt","namespace","images","image","jqEachoverlayNav","overlayNavElements","$overlayNav","overlayNavNoConflict","Plyr","setup","mrReadingPosition","scrollMonitor","SCROLL","PROGRESS","DATA_READING_POSITION","VALUE","MAX","Value","BAR_MAX","BAR_MIN","progressBars","getWindowHeight","max","clientHeight","innerHeight","getScrollPosition","scrollTop","ReadingPosition","top","bottom","scrollLength","articlePositionPercent","inView","reading","initWatcher","initBarValues","setValue","setScrollEvent","watcher","create","recalculateAll","stateChange","isInViewport","isAboveViewport","isFullyInViewport","toggleBars","bar","scrollPosition","recalculatePercentage","show","recalculateLocation","jqEachReadingPosition","readingPositionElements","$readingPosition","ReadingPositionNoConflict","mrSmoothScroll","smoothScroll","SmoothScroll","offset","mrSticky","NO_OFFSET","FIXED_TOP","ABSOLUTE_BOTTOM","FIXED_BOTTOM","SCROLLED","HEIGHT","WIDTH","SPACE_TOP","SPACE_BOTTOM","WINDOW_RESIZE","ALERT_CLOSED","BELOW_NAV","TOP","BOTTOM","DATA_STICKY","NAV_STICKY","ALERT","Sticky","stickyData","stickyUntil","stickBelowNav","stickBottom","updateNavProperties","isNavElement","is","navElement","updateCss","onWatcherChange","notNavElement","navIsSticky","outerHeight","lock","untilWatcher","navIsAbsolute","addClass","exitViewport","enterViewport","css","unlock","onResize","elemHeight","$navElement","jqEachSticky","stickyElements","$sticky","StickyNoConflict"],"mappings":"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"}