1(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){ 2"use strict"; 3 4var _ = require("../.."); 5 6var ATTR = { 7 ACCORDION: 'data-accordion', 8 TRIGGER: 'data-accordion-trigger' 9}; 10var SELECTOR = { 11 ACCORDION: "[".concat(ATTR.ACCORDION, "]"), 12 TRIGGER: "[".concat(ATTR.TRIGGER, "]") 13}; 14var CLASS = { 15 MOBILE_ONLY: 'accordion--mobile-only', 16 IS_OPEN: 'is-open' 17}; 18var KEYS = { 19 KEY_ENTER: 13, 20 KEY_SPACE: 32 21}; 22document.addEventListener('DOMContentLoaded', function () { 23 _.breakpoint.init(); 24 25 var isMobile = function isMobile() { 26 return ['xs', 'sm'].indexOf(_.breakpoint.get()) > -1; 27 }; 28 29 var $trigger = document.querySelectorAll(SELECTOR.TRIGGER); 30 31 var toggleDrawer = function toggleDrawer($element) { 32 $element.classList.toggle(CLASS.IS_OPEN); 33 34 if ($element.classList.contains(CLASS.IS_OPEN)) { 35 $element.querySelectorAll('.accordion__content [tabindex="-1"]').forEach(function (el) { 36 el.setAttribute('tabindex', '0'); 37 }); 38 } else { 39 $element.querySelectorAll('.accordion__content [tabindex="0"]').forEach(function (el) { 40 el.setAttribute('tabindex', '-1'); 41 }); 42 } 43 }; 44 45 var handleButtonKeypress = function handleButtonKeypress(e) { 46 var $element = e.target.closest(SELECTOR.ACCORDION); 47 48 switch (e.which) { 49 case KEYS.KEY_SPACE: 50 case KEYS.KEY_ENTER: 51 { 52 if ($element.classList.contains(CLASS.MOBILE_ONLY)) { 53 if (isMobile()) { 54 e.stopPropagation(); 55 e.preventDefault(); 56 toggleDrawer($element); 57 } 58 } else { 59 e.stopPropagation(); 60 e.preventDefault(); 61 toggleDrawer($element); 62 } 63 64 break; 65 } 66 } //end switch 67 68 69 return true; 70 }; 71 72 var handleButtonClick = function handleButtonClick(e) { 73 var $element = e.target.closest(SELECTOR.ACCORDION); 74 $element.querySelector(SELECTOR.TRIGGER).blur(); 75 76 if ($element.classList.contains(CLASS.MOBILE_ONLY)) { 77 if (isMobile()) { 78 e.stopPropagation(); 79 e.preventDefault(); 80 toggleDrawer($element); 81 } 82 } else { 83 e.stopPropagation(); 84 e.preventDefault(); 85 toggleDrawer($element); 86 } 87 }; 88 89 $trigger.forEach(function (el) { 90 if (!isMobile()) { 91 var $element = el.closest(SELECTOR.ACCORDION); 92 93 if ($element.classList.contains(CLASS.MOBILE_ONLY)) { 94 el.setAttribute('tabindex', '-1'); 95 $element.querySelectorAll('.accordion__content [tabindex="-1"]').forEach(function (el) { 96 el.setAttribute('tabindex', '0'); 97 }); 98 } 99 } 100 101 el.addEventListener('click', handleButtonClick); 102 el.addEventListener('keypress', handleButtonKeypress); 103 }); 104}); 105 106},{"../..":2}],2:[function(require,module,exports){ 107"use strict"; 108 109Object.defineProperty(exports, "__esModule", { 110 value: true 111}); 112exports["default"] = exports.breakpoint = void 0; 113 114var _breakpoint = _interopRequireDefault(require("./lib/breakpoint")); 115 116function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } 117 118// Named exports here 119var breakpoint = _breakpoint["default"]; // Entire default export here 120 121exports.breakpoint = breakpoint; 122var _default = { 123 breakpoint: breakpoint 124}; 125exports["default"] = _default; 126 127},{"./lib/breakpoint":3}],3:[function(require,module,exports){ 128"use strict"; 129 130Object.defineProperty(exports, "__esModule", { 131 value: true 132}); 133exports["default"] = void 0; 134 135function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } 136 137function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {};
137 i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } 138 139function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 140 141/** 142 * Helper module for querying the current break point. 143 * 144 * Rather than returning a width, or indeed relying on one, we use visibility 145 * helper classes to tie into how the breakpoints are calculated with media queries. 146 * 147 * This is important as it ensures consistency when adding JS functionality at 148 * a certain breakpoint 149 */ 150 151/** 152 * These are the default used to setup this helper module 153 * @type {Object} 154 */ 155var defaultOptions = { 156 // Template must be encapsulated HTML 157 template: 'span', 158 // CSS properties appled to each element 159 styles: "position: absolute; left: 0; bottom: 0; width: 1px; height: 1px;", 160 // Combines with sizes to create (prefix + size) 161 classPrefix: 'visible-', 162 // The different sizes to create elements for 163 // Should map to breakpoints 164 breakpoints: ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'], 165 // The breakpoint attribute used to query visible element flag 166 dataAttrSelector: 'data-catchify-breakpoint', 167 // An event to fire when the breakpoint initialises 168 breakpointInitEvent: 'breakpointInit', 169 // An event to fire when the breakpoint changes 170 breakpointChangeEvent: 'breakpointChange' 171}; 172var breakpoint = { 173 /** 174 * Sets up the breakpoint helper, implementing flag elements into the DOM 175 * @param {Object} options 176 */ 177 init: function init() { 178 var _this = this; 179 180 var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 181 var changeTimeoutId; 182 var lastCalculatedSize; // Combine user given options with defaults 183 184 this.options = _objectSpread(_objectSpread({}, defaultOptions), options); // For every given breakpoints create a helper flag element 185 186 this.options.breakpoints.forEach(function (size) { 187 var $element = document.createElement(_this.options.template); // Setup element properties 188 189 $element.setAttribute('style', _this.options.styles); 190 $element.setAttribute('class', _this.options.classPrefix + size); 191 $element.setAttribute(_this.options.dataAttrSelector, size); // Add element to body 192 193 document.querySelector('body').appendChild($element); 194 }); // Trigger init event 195 196 var event = new CustomEvent(this.options.breakpointInitEvent, { 197 detail: { 198 breakpoint: this.get() 199 }, 200 bubbles: true 201 }); 202 document.dispatchEvent(event); // Watch for resizes 203 204 window.addEventListener('resize', function () { 205 clearTimeout(changeTimeoutId); 206 changeTimeoutId = setTimeout(function () { 207 if (lastCalculatedSize !== _this.get()) { 208 lastCalculatedSize = _this.get(); 209 210 var _event = new CustomEvent(_this.options.breakpointChangeEvent, { 211 detail: {
212 breakpoint: lastCalculatedSize 213 }, 214 bubbles: true 215 }); 216 217 document.dispatchEvent(_event); 218 } 219 }, _this.options.resizeTimeout); 220 }); 221 }, 222 223 /** 224 * Returns the current breakpoint in range of options.breakpoints 225 * @return {String} 226 */ 227 get: function get() { 228 var _this2 = this; 229 230 var $element = document.querySelectorAll("[".concat(this.options.dataAttrSelector, "]")); 231 var breakpoint = ''; 232 $element.forEach(function (element) { 233 if (element.offsetWidth > 0 && element.offsetHeight > 0) { 234 breakpoint = element.getAttribute(_this2.options.dataAttrSelector); 235 } 236 }); 237 return breakpoint; 238 }, 239 240 /** 241 * Checks if the breakpoint is the same as that given 242 * @param {String} size 243 * @return {Boolean} 244 */ 245 is: function is(size) { 246 return this.get() === size; 247 }, 248 249 /** 250 * Checks if the breakpoint is not the same as that given 251 * @param {String} size 252 * @return {Boolean} 253 */ 254 not: function not(size) { 255 return !this.is(size); 256 } 257}; 258var _default = breakpoint; 259exports["default"] = _default; 260 261},{}]},{},[1]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.