{"version":3,"file":"application-CzxB57uP.js","sources":["../../../node_modules/js-toc/index.js","../../../node_modules/smoothscroll-polyfill/dist/smoothscroll.js","../../../app/javascript/entrypoints/application.js"],"sourcesContent":["import './style.min.css'\n\nElement.prototype.toc = function(options = {}) {\n const defaultOptions = {\n tocSelector: '#toc',\n maxHeight: '75vh',\n activeClass: 'js-toc-active',\n autoOpen: true,\n tocIndent: true,\n tocNumber: true,\n smoothScroll: true,\n }\n options = { ...defaultOptions, ...options }\n\n const tocContainer = document.querySelector(options.tocSelector)\n\n // Add default toc title if not exists\n if (!tocContainer.querySelector('.js-toc-title')) {\n const tocTitle = document.createElement('div')\n tocTitle.classList.add('js-toc-title')\n tocTitle.textContent = 'Table of Contents'\n tocContainer.appendChild(tocTitle)\n }\n\n // ===== ADD TABLE OF CONTENTS =====\n const headings = this.querySelectorAll('h1, h2, h3, h4, h5, h6')\n if (headings.length === 0) return\n \n const startingLevel = headings[0].tagName[1]\n const toc = document.createElement('ul')\n const prevLevels = [0, 0, 0, 0, 0, 0]\n \n for (let i = 0; i < headings.length; i++) {\n const heading = headings[i]\n const level = parseInt(heading.tagName[1])\n \n prevLevels[level - 1]++\n for (let j = level; j < prevLevels.length; j++) {\n prevLevels[j] = 0\n }\n\n const sectionNumber = prevLevels.slice(startingLevel - 1, level).join('.').replace(/\\.0/g, \"\")\n const newHeadingId = `${heading.textContent.toLowerCase().replace(/ /g, '-')}`\n heading.id = newHeadingId\n\n const anchor = document.createElement('a')\n anchor.setAttribute('href', `#${newHeadingId}`)\n anchor.textContent = heading.textContent\n\n anchor.addEventListener('click', (event) => {\n event.preventDefault()\n const targetId = event.target.getAttribute('href').slice(1)\n const targetElement = document.getElementById(targetId)\n targetElement.scrollIntoView({ behavior: options.smoothScroll ? 'smooth' : 'auto' })\n history.pushState(null, null, `#${targetId}`)\n })\n\n const listItem = document.createElement('li')\n if (options.tocNumber) listItem.textContent = sectionNumber\n listItem.appendChild(anchor)\n\n listItem.classList.add('js-toc-item')\n if (options.tocIndent) {\n const className = `js-toc-${heading.tagName.toLowerCase()}`\n listItem.classList.add(className)\n }\n\n toc.appendChild(listItem)\n }\n\n const existingTocContent = document.querySelector('.js-toc-content');\n // Remove existing TOC content if it exists\n if (existingTocContent) tocContainer.removeChild(existingTocContent);\n var tocContent = document.createElement('div')\n tocContent.classList.add('js-toc-content')\n tocContent.style.maxHeight = options.maxHeight\n tocContainer.appendChild(tocContent)\n tocContent.appendChild(toc)\n tocContent.style.height = tocContent.scrollHeight + 'px'\n \n // ===== TOGGLE COLLAPSE =====\n var toggleButton = document.createElement(\"div\")\n toggleButton.classList.add('chevron-down')\n toggleButton.id = \"tocContentToggle\"\n tocContainer.appendChild(toggleButton)\n\n if (!options.autoOpen) closeTOC()\n\n toggleButton.addEventListener(\"click\", function() {\n if (isOpen()) {\n closeTOC()\n } else {\n openTOC()\n }\n })\n\n // ===== DETECT CURRENT TOC ITEM =====\n window.addEventListener('scroll', function() {\n let scroll = window.scrollY\n let height = window.innerHeight\n let offset = 200\n \n headings.forEach(function (heading, index) {\n let i = index + 1;\n let target = document.querySelector('#toc li:nth-of-type(' + i + ')');\n let pos = heading.getBoundingClientRect().top + scroll\n if (!target) return\n \n if (scroll > pos - height + offset) {\n if (headings[index + 1] !== undefined) {\n let next_pos = headings[index + 1].getBoundingClientRect().top + scroll\n if (scroll > next_pos - height + offset) {\n target.classList.remove(options.activeClass)\n } else if (i === 1 && tocContainer.classList.contains('active') === false) {\n target.classList.add(options.activeClass)\n tocContainer.classList.add('active')\n } else { \n target.classList.add(options.activeClass)\n }\n } else {\n target.classList.add(options.activeClass)\n }\n } else {\n target.classList.remove(options.activeClass)\n if (i === 1 && tocContainer.classList.contains('active')) {\n tocContainer.classList.remove('active')\n }\n }\n })\n })\n \n // ===== SCROLL TO CURRENT ANCHOR WHEN PAGE LOADED =====\n if (window.location.hash) {\n const anchorId = decodeURIComponent(window.location.hash.slice(1));\n const anchorElement = document.getElementById(anchorId);\n \n if (anchorElement) {\n anchorElement.scrollIntoView({ behavior: options.smoothScroll ? 'smooth' : 'auto' })\n }\n }\n\n function closeTOC() {\n tocContent.style.height = '0px'\n toggleButton.classList.remove('chevron-down')\n toggleButton.classList.add('chevron-left') \n }\n\n function openTOC() {\n tocContent.style.height = tocContent.scrollHeight + 'px'\n toggleButton.classList.remove('chevron-left')\n toggleButton.classList.add('chevron-down')\n }\n\n function isOpen() {\n return tocContent.style.height !== '0px'\n }\n}","/* smoothscroll v0.4.4 - 2019 - Dustan Kasten, Jeremias Menichelli - MIT License */\n(function () {\n 'use strict';\n\n // polyfill\n function polyfill() {\n // aliases\n var w = window;\n var d = document;\n\n // return if scroll behavior is supported and polyfill is not forced\n if (\n 'scrollBehavior' in d.documentElement.style &&\n w.__forceSmoothScrollPolyfill__ !== true\n ) {\n return;\n }\n\n // globals\n var Element = w.HTMLElement || w.Element;\n var SCROLL_TIME = 468;\n\n // object gathering original scroll methods\n var original = {\n scroll: w.scroll || w.scrollTo,\n scrollBy: w.scrollBy,\n elementScroll: Element.prototype.scroll || scrollElement,\n scrollIntoView: Element.prototype.scrollIntoView\n };\n\n // define timing method\n var now =\n w.performance && w.performance.now\n ? w.performance.now.bind(w.performance)\n : Date.now;\n\n /**\n * indicates if a the current browser is made by Microsoft\n * @method isMicrosoftBrowser\n * @param {String} userAgent\n * @returns {Boolean}\n */\n function isMicrosoftBrowser(userAgent) {\n var userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/'];\n\n return new RegExp(userAgentPatterns.join('|')).test(userAgent);\n }\n\n /*\n * IE has rounding bug rounding down clientHeight and clientWidth and\n * rounding up scrollHeight and scrollWidth causing false positives\n * on hasScrollableSpace\n */\n var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;\n\n /**\n * changes scroll position inside an element\n * @method scrollElement\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function scrollElement(x, y) {\n this.scrollLeft = x;\n this.scrollTop = y;\n }\n\n /**\n * returns result of applying ease math function to a number\n * @method ease\n * @param {Number} k\n * @returns {Number}\n */\n function ease(k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n }\n\n /**\n * indicates if a smooth behavior should be applied\n * @method shouldBailOut\n * @param {Number|Object} firstArg\n * @returns {Boolean}\n */\n function shouldBailOut(firstArg) {\n if (\n firstArg === null ||\n typeof firstArg !== 'object' ||\n firstArg.behavior === undefined ||\n firstArg.behavior === 'auto' ||\n firstArg.behavior === 'instant'\n ) {\n // first argument is not an object/null\n // or behavior is auto, instant or undefined\n return true;\n }\n\n if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') {\n // first argument is an object and behavior is smooth\n return false;\n }\n\n // throw error when behavior is not supported\n throw new TypeError(\n 'behavior member of ScrollOptions ' +\n firstArg.behavior +\n ' is not a valid value for enumeration ScrollBehavior.'\n );\n }\n\n /**\n * indicates if an element has scrollable space in the provided axis\n * @method hasScrollableSpace\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function hasScrollableSpace(el, axis) {\n if (axis === 'Y') {\n return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;\n }\n\n if (axis === 'X') {\n return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;\n }\n }\n\n /**\n * indicates if an element has a scrollable overflow property in the axis\n * @method canOverflow\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function canOverflow(el, axis) {\n var overflowValue = w.getComputedStyle(el, null)['overflow' + axis];\n\n return overflowValue === 'auto' || overflowValue === 'scroll';\n }\n\n /**\n * indicates if an element can be scrolled in either axis\n * @method isScrollable\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function isScrollable(el) {\n var isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y');\n var isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X');\n\n return isScrollableY || isScrollableX;\n }\n\n /**\n * finds scrollable parent of an element\n * @method findScrollableParent\n * @param {Node} el\n * @returns {Node} el\n */\n function findScrollableParent(el) {\n while (el !== d.body && isScrollable(el) === false) {\n el = el.parentNode || el.host;\n }\n\n return el;\n }\n\n /**\n * self invoked function that, given a context, steps through scrolling\n * @method step\n * @param {Object} context\n * @returns {undefined}\n */\n function step(context) {\n var time = now();\n var value;\n var currentX;\n var currentY;\n var elapsed = (time - context.startTime) / SCROLL_TIME;\n\n // avoid elapsed times higher than one\n elapsed = elapsed > 1 ? 1 : elapsed;\n\n // apply easing to elapsed time\n value = ease(elapsed);\n\n currentX = context.startX + (context.x - context.startX) * value;\n currentY = context.startY + (context.y - context.startY) * value;\n\n context.method.call(context.scrollable, currentX, currentY);\n\n // scroll more if we have not reached our destination\n if (currentX !== context.x || currentY !== context.y) {\n w.requestAnimationFrame(step.bind(w, context));\n }\n }\n\n /**\n * scrolls window or element with a smooth behavior\n * @method smoothScroll\n * @param {Object|Node} el\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function smoothScroll(el, x, y) {\n var scrollable;\n var startX;\n var startY;\n var method;\n var startTime = now();\n\n // define scroll context\n if (el === d.body) {\n scrollable = w;\n startX = w.scrollX || w.pageXOffset;\n startY = w.scrollY || w.pageYOffset;\n method = original.scroll;\n } else {\n scrollable = el;\n startX = el.scrollLeft;\n startY = el.scrollTop;\n method = scrollElement;\n }\n\n // scroll looping over a frame\n step({\n scrollable: scrollable,\n method: method,\n startTime: startTime,\n startX: startX,\n startY: startY,\n x: x,\n y: y\n });\n }\n\n // ORIGINAL METHODS OVERRIDES\n // w.scroll and w.scrollTo\n w.scroll = w.scrollTo = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scroll.call(\n w,\n arguments[0].left !== undefined\n ? arguments[0].left\n : typeof arguments[0] !== 'object'\n ? arguments[0]\n : w.scrollX || w.pageXOffset,\n // use top prop, second argument if present or fallback to scrollY\n arguments[0].top !== undefined\n ? arguments[0].top\n : arguments[1] !== undefined\n ? arguments[1]\n : w.scrollY || w.pageYOffset\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n w,\n d.body,\n arguments[0].left !== undefined\n ? ~~arguments[0].left\n : w.scrollX || w.pageXOffset,\n arguments[0].top !== undefined\n ? ~~arguments[0].top\n : w.scrollY || w.pageYOffset\n );\n };\n\n // w.scrollBy\n w.scrollBy = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0])) {\n original.scrollBy.call(\n w,\n arguments[0].left !== undefined\n ? arguments[0].left\n : typeof arguments[0] !== 'object' ? arguments[0] : 0,\n arguments[0].top !== undefined\n ? arguments[0].top\n : arguments[1] !== undefined ? arguments[1] : 0\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n w,\n d.body,\n ~~arguments[0].left + (w.scrollX || w.pageXOffset),\n ~~arguments[0].top + (w.scrollY || w.pageYOffset)\n );\n };\n\n // Element.prototype.scroll and Element.prototype.scrollTo\n Element.prototype.scroll = Element.prototype.scrollTo = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n // if one number is passed, throw error to match Firefox implementation\n if (typeof arguments[0] === 'number' && arguments[1] === undefined) {\n throw new SyntaxError('Value could not be converted');\n }\n\n original.elementScroll.call(\n this,\n // use left prop, first number argument or fallback to scrollLeft\n arguments[0].left !== undefined\n ? ~~arguments[0].left\n : typeof arguments[0] !== 'object' ? ~~arguments[0] : this.scrollLeft,\n // use top prop, second argument or fallback to scrollTop\n arguments[0].top !== undefined\n ? ~~arguments[0].top\n : arguments[1] !== undefined ? ~~arguments[1] : this.scrollTop\n );\n\n return;\n }\n\n var left = arguments[0].left;\n var top = arguments[0].top;\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n this,\n this,\n typeof left === 'undefined' ? this.scrollLeft : ~~left,\n typeof top === 'undefined' ? this.scrollTop : ~~top\n );\n };\n\n // Element.prototype.scrollBy\n Element.prototype.scrollBy = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.elementScroll.call(\n this,\n arguments[0].left !== undefined\n ? ~~arguments[0].left + this.scrollLeft\n : ~~arguments[0] + this.scrollLeft,\n arguments[0].top !== undefined\n ? ~~arguments[0].top + this.scrollTop\n : ~~arguments[1] + this.scrollTop\n );\n\n return;\n }\n\n this.scroll({\n left: ~~arguments[0].left + this.scrollLeft,\n top: ~~arguments[0].top + this.scrollTop,\n behavior: arguments[0].behavior\n });\n };\n\n // Element.prototype.scrollIntoView\n Element.prototype.scrollIntoView = function() {\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scrollIntoView.call(\n this,\n arguments[0] === undefined ? true : arguments[0]\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n var scrollableParent = findScrollableParent(this);\n var parentRects = scrollableParent.getBoundingClientRect();\n var clientRects = this.getBoundingClientRect();\n\n if (scrollableParent !== d.body) {\n // reveal element inside parent\n smoothScroll.call(\n this,\n scrollableParent,\n scrollableParent.scrollLeft + clientRects.left - parentRects.left,\n scrollableParent.scrollTop + clientRects.top - parentRects.top\n );\n\n // reveal parent in viewport unless is fixed\n if (w.getComputedStyle(scrollableParent).position !== 'fixed') {\n w.scrollBy({\n left: parentRects.left,\n top: parentRects.top,\n behavior: 'smooth'\n });\n }\n } else {\n // reveal element in viewport\n w.scrollBy({\n left: clientRects.left,\n top: clientRects.top,\n behavior: 'smooth'\n });\n }\n };\n }\n\n if (typeof exports === 'object' && typeof module !== 'undefined') {\n // commonjs\n module.exports = { polyfill: polyfill };\n } else {\n // global\n polyfill();\n }\n\n}());\n","// To see this message, add the following to the `` section in your\n// views/layouts/application.html.erb\n//\n// <%= vite_client_tag %>\n// <%= vite_javascript_tag 'application' %>\n// console.log('Vite ⚡️ Rails')\n\n// If using a TypeScript entrypoint file:\n// <%= vite_typescript_tag 'application' %>\n//\n// If you want to use .jsx or .tsx, add the extension:\n// <%= vite_javascript_tag 'application.jsx' %>\n\n// console.log('Visit the guide for more information: ', 'https://vite-ruby.netlify.app/guide/rails')\n\n// Example: Load Rails libraries in Vite.\n//\nimport * as Turbo from '@hotwired/turbo'\nTurbo.start()\n//\n// import ActiveStorage from '@rails/activestorage'\n// ActiveStorage.start()\n//\n// // Import all channels.\n// const channels = import.meta.globEager('./**/*_channel.js')\n\n// Example: Import a stylesheet in app/frontend/index.css\n\nimport '../controllers'\n\nimport 'flowbite/dist/flowbite.turbo'\nimport 'js-toc'\nimport '../src/main'\n\nimport smoothscroll from 'smoothscroll-polyfill'\nsmoothscroll.polyfill()\n\nimport { fas } from '@fortawesome/free-solid-svg-icons'\nimport { far } from '@fortawesome/free-regular-svg-icons'\nimport { fab } from '@fortawesome/free-brands-svg-icons'\nimport { library } from \"@fortawesome/fontawesome-svg-core\";\nimport '@fortawesome/fontawesome-free'\nlibrary.add(fas, far, fab)\n\nimport '@/builds/tailwind.css'\n\ndocument.addEventListener('turbo:load', () => {\n fbAsyncInit()\n})\n"],"names":["options","tocContainer","tocTitle","headings","startingLevel","toc","prevLevels","i","heading","level","j","sectionNumber","newHeadingId","anchor","event","targetId","listItem","className","existingTocContent","tocContent","toggleButton","closeTOC","isOpen","openTOC","scroll","height","offset","index","target","pos","next_pos","anchorId","anchorElement","polyfill","w","d","Element","SCROLL_TIME","original","scrollElement","now","isMicrosoftBrowser","userAgent","userAgentPatterns","ROUNDING_TOLERANCE","x","y","ease","k","shouldBailOut","firstArg","hasScrollableSpace","el","axis","canOverflow","overflowValue","isScrollable","isScrollableY","isScrollableX","findScrollableParent","step","context","time","value","currentX","currentY","elapsed","smoothScroll","scrollable","startX","startY","method","startTime","left","top","scrollableParent","parentRects","clientRects","module","Turbo.start","smoothscroll","library","fas","far","fab"],"mappings":"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","x_google_ignoreList":[0,1]}