(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define('GOVUKFrontend', ['exports'], factory) : (factory((global.GOVUKFrontend = {}))); }(this, (function (exports) { 'use strict'; (function(undefined) { // Detection from https://raw.githubusercontent.com/Financial-Times/polyfill-service/1f3c09b402f65bf6e393f933a15ba63f1b86ef1f/packages/polyfill-library/polyfills/Element/prototype/matches/detect.js var detect = ( 'document' in this && "matches" in document.documentElement ); if (detect) return // Polyfill from https://raw.githubusercontent.com/Financial-Times/polyfill-service/1f3c09b402f65bf6e393f933a15ba63f1b86ef1f/packages/polyfill-library/polyfills/Element/prototype/matches/polyfill.js Element.prototype.matches = Element.prototype.webkitMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.mozMatchesSelector || function matches(selector) { var element = this; var elements = (element.document || element.ownerDocument).querySelectorAll(selector); var index = 0; while (elements[index] && elements[index] !== element) { ++index; } return !!elements[index]; }; }).call('object' === typeof window && window || 'object' === typeof self && self || 'object' === typeof global && global || {}); (function(undefined) { // Detection from https://raw.githubusercontent.com/Financial-Times/polyfill-service/1f3c09b402f65bf6e393f933a15ba63f1b86ef1f/packages/polyfill-library/polyfills/Element/prototype/closest/detect.js var detect = ( 'document' in this && "closest" in document.documentElement ); if (detect) return // Polyfill from https://raw.githubusercontent.com/Financial-Times/polyfill-service/1f3c09b402f65bf6e393f933a15ba63f1b86ef1f/packages/polyfill-library/polyfills/Element/prototype/closest/polyfill.js Element.prototype.closest = function closest(selector) { var node = this; while (node) { if (node.matches(selector)) return node; else node = 'SVGElement' in window && node instanceof SVGElement ? node.parentNode : node.parentElement; } return null; }; }).call('object' === typeof window && window || 'object' === typeof self && self || 'object' === typeof global && global || {}); /** * Returns the value of the given attribute closest to the given element (including itself) * * @param {HTMLElement} $element - The element to start walking the DOM tree up * @param {string} attributeName - The name of the attribute * @returns {string | undefined} Attribute value */ function closestAttributeValue ($element, attributeName) { var closestElementWithAttribute = $element.closest('[' + attributeName + ']'); if (closestElementWithAttribute) { return closestElementWithAttribute.getAttribute(attributeName) } } exports.closestAttributeValue = closestAttributeValue; }))); //# sourceMappingURL=closest-attribute-value.js.map