{"version":3,"sources":["webpack://@verndale/toolkit/./src/js/modules/jumplinksContainer.ts","webpack://@verndale/toolkit/./node_modules/uuid/dist/esm-browser/native.js","webpack://@verndale/toolkit/./node_modules/uuid/dist/esm-browser/rng.js","webpack://@verndale/toolkit/./node_modules/uuid/dist/esm-browser/stringify.js","webpack://@verndale/toolkit/./node_modules/uuid/dist/esm-browser/v4.js"],"names":["JumplinksContainer","Component","el","__publicField","e","id","y","jumplinks","section","title","uuidv4","activeIndex","jumpLinksSections","currentScroll","scrollDirection","index","verticalBreakpoint","link","getRandomValues","rnds8","rng","byteToHex","i","unsafeStringify","arr","offset","stringify","uuid","v4","options","buf","rnds"],"mappings":"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","file":"scripts/8500.8959173b5b26697dc264.js","sourcesContent":["import { Component } from '@verndale/core';\nimport { v4 as uuidv4 } from 'uuid';\n\nclass JumplinksContainer extends Component {\n breakpoint = window.matchMedia('(min-width: 1280px)');\n offsetTop = 0;\n lastScrollTop = 0;\n\n constructor(el: HTMLElement) {\n super(el);\n\n this.generateJumplinks();\n this.handleBreakpoint();\n this.addEventListeners();\n }\n\n setupDefaults() {\n this.dom = {\n jumpLinksContainer: this.el.querySelector(\n '.jump-links-menu__list'\n ),\n jumpLinksSections: this.el.querySelectorAll('[data-anchor]')\n };\n }\n\n addEventListeners() {\n document.addEventListener('scroll', this.handleScroll.bind(this));\n this.breakpoint.addEventListener(\n 'change',\n this.handleBreakpoint.bind(this)\n );\n (this.dom.jumpLinksContainer as HTMLElement).addEventListener(\n 'click',\n this.handleJumpLinksClick.bind(this)\n );\n }\n\n handleBreakpoint() {\n this.offsetTop = this.breakpoint.matches ? 160 : 0;\n }\n\n handleScroll() {\n this.updateActiveJumpLink();\n }\n\n handleJumpLinksClick(e: Event) {\n e.preventDefault();\n\n const target = e.target as HTMLAnchorElement;\n const id = target.getAttribute('href');\n\n if (id) {\n const el = document.getElementById(id.replace('#', ''));\n\n if (el) {\n //scroll to that element + offset\n const y = el.getBoundingClientRect().top + window.scrollY - 150;\n\n window.scrollTo({\n top: y,\n behavior: 'smooth'\n });\n }\n }\n }\n\n handleActionsScrollClick(e: Event) {\n e.preventDefault();\n\n const target = e.currentTarget as HTMLButtonElement;\n const id = target.dataset.scrollTo;\n\n if (id) {\n const el = document.getElementById(id.replace('#', ''));\n\n if (el) {\n //scroll to that element + offset\n const y = el.getBoundingClientRect().top + window.scrollY - 150;\n\n window.scrollTo({\n top: y,\n behavior: 'smooth'\n });\n }\n }\n }\n\n generateJumplinks() {\n let jumplinks = '';\n const jumpLinksSections = this.dom\n .jumpLinksSections as NodeListOf;\n\n jumpLinksSections.forEach(section => {\n const title = section.getAttribute('data-anchor');\n const id = uuidv4();\n section.setAttribute('id', id);\n\n jumplinks += `
  • ${title}
  • `;\n });\n\n (this.dom.jumpLinksContainer as HTMLElement).innerHTML = jumplinks;\n }\n\n updateActiveJumpLink() {\n let activeIndex = 0;\n const jumpLinksSections = this.dom\n .jumpLinksSections as NodeListOf;\n\n const jumplinks = (\n this.dom.jumpLinksContainer as HTMLElement\n ).querySelectorAll('a');\n const currentScroll = window.scrollY || document.documentElement.scrollTop;\n const scrollDirection = currentScroll > this.lastScrollTop ? 'down' : 'up';\n this.lastScrollTop = currentScroll <= 0 ? 0 : currentScroll;\n\n jumpLinksSections.forEach((section, index) => {\n const { y } = section.getBoundingClientRect();\n const verticalBreakpoint = Math.round(window.innerHeight / 2 - 60);\n //(verticalBreakpoint, 'JLBreakpoint');\n //console.log(jumpLinksSections, 'section');\n\n if (scrollDirection === 'up' && y - this.offsetTop < 0) {\n activeIndex = index;\n } else if (scrollDirection === 'down' && y < verticalBreakpoint) {\n activeIndex = index;\n }\n });\n\n jumplinks.forEach((link, index) => {\n if (index === activeIndex) {\n link.classList.add('active');\n } else {\n link.classList.remove('active');\n }\n //console.log('links',jumplinks)\n });\n }\n}\n\nexport default JumplinksContainer;\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","// 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()).\nlet getRandomValues;\nconst 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.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\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}","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\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 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 return (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();\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // 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 native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const 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 (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;"],"sourceRoot":""}