{"version":3,"sources":["webpack:///./node_modules/uuid/dist/esm-browser/rng.js","webpack:///./node_modules/uuid/dist/esm-browser/regex.js","webpack:///./node_modules/uuid/dist/esm-browser/stringify.js","webpack:///./node_modules/uuid/dist/esm-browser/validate.js","webpack:///./node_modules/uuid/dist/esm-browser/v4.js","webpack:///./src/js/modules/columCardListing.js"],"names":["getRandomValues","rnds8","Uint8Array","rng","crypto","bind","msCrypto","Error","uuid","test","byteToHex","push","toString","substr","arr","offset","arguments","length","undefined","toLowerCase","TypeError","options","buf","rnds","random","i","Module","this","dom","container","el","querySelector","items","querySelectorAll","triggers","initAccordion","addEventListener","handleKeyDown","forEach","trigger","handleClick","item","index","buttonGuid","uuidv4","contentGuid","content","setAttribute","getAttribute","classList","add","e","button","currentTarget","closeItem","openItem","target","key","which","ctrlModifier","ctrlKey","match","parentNode","contains","indexOf","direction","newIndex","focus","preventDefault","trig","document","getElementById","style","visibility","remove","open","element","onComplete","height","close","Component"],"mappings":"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","file":"41.fa16330b897f3c852ac6.js","sourcesContent":["// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","import { Component } from '@verndale/core';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { open, close } from '../helpers';\r\n\r\nclass Module extends Component {\r\n setupDefaults() {\r\n this.dom = {\r\n container: this.el.querySelector('.colum-card-listing__cards-inner'),\r\n items: this.el.querySelectorAll('.colum-card__item'),\r\n triggers: this.el.querySelectorAll('.colum-card-listing__card')\r\n };\r\n\r\n this.initAccordion();\r\n }\r\n\r\n addListeners() {\r\n this.dom.container.addEventListener(\r\n 'keydown',\r\n this.handleKeyDown.bind(this)\r\n );\r\n this.dom.triggers.forEach(trigger =>\r\n trigger.addEventListener('click', this.handleClick.bind(this))\r\n );\r\n }\r\n\r\n initAccordion() {\r\n this.dom.items.forEach((item, index) => {\r\n const buttonGuid = uuidv4();\r\n const contentGuid = uuidv4();\r\n\r\n const trigger = item.querySelector('.colum-card-listing__card');\r\n const content = item.querySelector('.colum-card__item-content');\r\n\r\n trigger.setAttribute('aria-expanded', false);\r\n trigger.setAttribute('aria-controls', contentGuid);\r\n trigger.setAttribute('id', buttonGuid);\r\n content.setAttribute('aria-labelledby', buttonGuid);\r\n content.setAttribute('id', contentGuid);\r\n\r\n content.setAttribute(\r\n 'aria-hidden',\r\n trigger.getAttribute('aria-expanded') !== 'true'\r\n );\r\n\r\n item.classList.add('colum-card__item--collapsed');\r\n });\r\n }\r\n\r\n handleClick(e) {\r\n const button = e.currentTarget;\r\n\r\n if (button.getAttribute('aria-expanded') === 'true') {\r\n this.closeItem(button);\r\n } else {\r\n this.openItem(button);\r\n }\r\n }\r\n\r\n handleKeyDown(e) {\r\n const target = e.target;\r\n const key = e.which.toString();\r\n\r\n const ctrlModifier = e.ctrlKey && key.match(/33|34/);\r\n\r\n if (target.parentNode.classList.contains('colum-card-listing__card')) {\r\n if (key.match(/38|40/) || ctrlModifier) {\r\n const index = this.dom.triggers.indexOf(target);\r\n const direction = key.match(/34|40/) ? 1 : -1;\r\n const length = this.dom.triggers.length;\r\n const newIndex = (index + length + direction) % length;\r\n\r\n this.dom.triggers[newIndex].focus();\r\n\r\n e.preventDefault();\r\n } else if (key.match(/35|36/)) {\r\n /* eslint-disable indent */\r\n switch (key) {\r\n case '36':\r\n this.dom.triggers[0].focus();\r\n break;\r\n case '35':\r\n this.dom.triggers[this.dom.triggers.length - 1].focus();\r\n break;\r\n }\r\n /* eslint-enable indent */\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n\r\n openItem(trigger) {\r\n // close all other accordions\r\n this.dom.triggers.forEach(trig => {\r\n if (trig.getAttribute('aria-expanded') === 'true') {\r\n this.closeItem(trig)\r\n }\r\n });\r\n\r\n const content = document.getElementById(\r\n trigger.getAttribute('aria-controls')\r\n );\r\n\r\n trigger.setAttribute('aria-expanded', true);\r\n content.style.visibility = 'visible';\r\n trigger.parentNode.classList.add('colum-card__item--expanded');\r\n trigger.parentNode.classList.remove('colum-card__item--collapsed');\r\n\r\n open({\r\n element: content,\r\n onComplete: () => {\r\n content.setAttribute('aria-hidden', false);\r\n content.style.height = 'auto';\r\n }\r\n });\r\n }\r\n\r\n closeItem(trigger) {\r\n const content = document.getElementById(\r\n trigger.getAttribute('aria-controls')\r\n );\r\n\r\n trigger.setAttribute('aria-expanded', false);\r\n trigger.parentNode.classList.remove('colum-card__item--expanded');\r\n trigger.parentNode.classList.add('colum-card__item--collapsed');\r\n\r\n close({\r\n element: content,\r\n onComplete: () => {\r\n content.setAttribute('aria-hidden', true);\r\n content.style.visibility = 'hidden';\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default Module;\r\n"],"sourceRoot":""}