{ "version": 3, "sources": ["../../../../vendor/javascript/html-parsed-element.js", "../../javascripts/web-ui/elements/local-time.js", "../../javascripts/web-ui/elements/persistent-scroll.js", "../../javascripts/web-ui/elements/persistent-visibility.js", "../../javascripts/web-ui/elements/toggleAttribute.js", "../../javascripts/web-ui/morphdom/preserve-attributes.js", "../../javascripts/web-ui/after-page-render.js", "../../javascripts/web-ui/elements/scroll-indicator.js", "../../javascripts/web-ui/morphdom/ignore.js", "../../javascripts/web-ui/log.js", "../../javascripts/web-ui/elements/persistent-footer.js"], "sourcesContent": ["/*! (c) Andrea Giammarchi - ISC */\nconst HTMLParsedElement = (() => {\n const DCL = 'DOMContentLoaded';\n const init = new WeakMap;\n const queue = [];\n const isParsed = el => {\n do {\n if (el.nextSibling)\n return true;\n } while (el = el.parentNode);\n return false;\n };\n const upgrade = () => {\n queue.splice(0).forEach(info => {\n if (init.get(info[0]) !== true) {\n init.set(info[0], true);\n info[0][info[1]]();\n }\n });\n };\n document.addEventListener(DCL, upgrade);\n class HTMLParsedElement extends HTMLElement {\n static withParsedCallback(Class, name = 'parsed') {\n const {prototype} = Class;\n const {connectedCallback} = prototype;\n const method = name + 'Callback';\n const cleanUp = (el, observer, ownerDocument, onDCL) => {\n observer.disconnect();\n ownerDocument.removeEventListener(DCL, onDCL);\n parsedCallback(el);\n };\n const parsedCallback = el => {\n if (!queue.length)\n requestAnimationFrame(upgrade);\n queue.push([el, method]);\n };\n Object.defineProperties(\n prototype,\n {\n connectedCallback: {\n configurable: true,\n writable: true,\n value() {\n if (connectedCallback)\n connectedCallback.apply(this, arguments);\n if (method in this && !init.has(this)) {\n const self = this;\n const {ownerDocument} = self;\n init.set(self, false);\n if (ownerDocument.readyState === 'complete' || isParsed(self))\n parsedCallback(self);\n else {\n const onDCL = () => cleanUp(self, observer, ownerDocument, onDCL);\n ownerDocument.addEventListener(DCL, onDCL);\n const observer = new MutationObserver(() => {\n /* istanbul ignore else */\n if (isParsed(self))\n cleanUp(self, observer, ownerDocument, onDCL);\n });\n observer.observe(self.parentNode, {childList: true, subtree: true});\n }\n }\n }\n },\n [name]: {\n configurable: true,\n get() {\n return init.get(this) === true;\n }\n }\n }\n );\n return Class;\n }\n }\n return HTMLParsedElement.withParsedCallback(HTMLParsedElement);\n})();\nexport default HTMLParsedElement;;\n", "import HTMLParsedElement from \"html-parsed-element\"\n\nconst weekdays = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n]\n\nconst months = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n]\n\nfunction pad(num, flag) {\n return flag ? num : `0${num}`.slice(-2)\n}\n\nfunction strftime(time, directiveFormat) {\n const day = time.getDay()\n const date = time.getDate()\n const month = time.getMonth()\n const year = time.getFullYear()\n const hour = time.getHours()\n const minute = time.getMinutes()\n const second = time.getSeconds()\n\n const directiveCaptures = /%(-?)([%aAbBcdeHIlmMpPSwyYZ])/g\n\n const directiveReplacements = (_match, flag, modifier) =>\n ({\n \"%\": () => \"%\",\n a: () => weekdays[day].slice(0, 3),\n A: () => weekdays[day],\n b: () => months[month].slice(0, 3),\n B: () => months[month],\n c: () => time.toString(),\n d: () => pad(date, flag),\n e: () => String(date),\n H: () => pad(hour, flag),\n I: () => pad(strftime(time, \"%l\")),\n l: () =>\n hour === 0 || hour === 12 ? String(12) : String((hour + 12) % 12),\n m: () => pad(month + 1, flag),\n M: () => pad(minute, flag),\n p: () => (hour > 11 ? \"PM\" : \"AM\"),\n P: () => (hour > 11 ? \"pm\" : \"am\"),\n S: () => pad(second),\n w: () => String(day),\n y: () => pad(year % 100, flag),\n Y: () => String(year),\n undefined: () => \"\",\n }[modifier]())\n\n return directiveFormat.replace(directiveCaptures, directiveReplacements)\n}\n\nclass LocalTimeElement extends HTMLParsedElement {\n static get observedAttributes() {\n return [\"datetime\", \"format\"]\n }\n\n parsed = false\n date = null\n\n attributeChangedCallback(attrName, _oldValue, newValue) {\n if (attrName === \"datetime\") {\n const millis = Date.parse(newValue)\n\n isNaN(millis)\n ? this.date = null\n : this.date = new Date(millis)\n }\n\n if (this.parsed) {\n this.updateDate()\n }\n }\n\n parsedCallback() {\n this.parsed = true\n this.updateDate()\n }\n\n updateDate() {\n const text = this.getFormattedDate()\n\n if (text) {\n const node = this.children[0]\n node.textContent = text\n }\n }\n\n getFormattedDate() {\n const date = this.date\n\n if (!date) return\n\n const format = this.getAttribute(\"format\")\n const formattedDatetime = strftime(date, format)\n\n return formattedDatetime\n }\n}\n\nif (!window.customElements.get(\"local-time\")) {\n window.LocalTimeElement = LocalTimeElement\n window.customElements.define(\"local-time\", LocalTimeElement)\n}\n", "import HTMLParsedElement from \"html-parsed-element\"\n\nconst DEFAULT_ANCHOR_TOLERANCE = 1\n\nclass PersistentScroll extends HTMLParsedElement {\n parsedCallback() {\n this.restoreScrollPosition()\n\n this.addEventListener(\"scroll\", () => {\n this.saveScrollPosition()\n })\n }\n\n saveScrollPosition() {\n const key = this.getStorageKey()\n\n let scrollPosition = this.scrollTop\n let anchorPosition\n let anchored = false\n\n if (this.anchor === \"bottom\") {\n anchorPosition = this.scrollHeight - this.clientHeight\n anchorPosition -= this.anchorTolerance\n\n if (scrollPosition >= anchorPosition) {\n anchored = true\n }\n } else {\n anchorPosition = 0\n anchorPosition += this.anchorTolerance\n\n if (scrollPosition <= anchorPosition) {\n anchored = true\n }\n }\n\n if (anchored) {\n sessionStorage.removeItem(key)\n return\n }\n\n sessionStorage.setItem(key, scrollPosition)\n }\n\n restoreScrollPosition() {\n const key = this.getStorageKey()\n const scrollPosition = sessionStorage.getItem(key)\n\n if (scrollPosition != null) {\n if (this.scrollTop != scrollPosition) {\n this.scrollTo(0, scrollPosition)\n }\n } else {\n if (this.anchor === \"bottom\") {\n let bottomPosition = this.scrollHeight - this.clientHeight\n\n this.scrollTo(0, bottomPosition)\n }\n }\n }\n\n getStorageKey() {\n let key = this.getAttribute(\"key\")\n key ||= this.id\n\n if (!key) {\n throw new Error(\"persistent-scroll requires a key or id attribute\")\n }\n\n return `persistent-scroll:${key}`\n }\n\n get anchor() {\n return this.getAttribute(\"anchor\")\n }\n\n get anchorTolerance() {\n let tolerance = this.getAttribute(\"anchor-tolerance\")\n\n if (tolerance == null) {\n return DEFAULT_ANCHOR_TOLERANCE\n }\n\n return parseInt(tolerance, 10)\n }\n}\n\n// This happens synchronously after turbo does its rendering, which is necessary\n// to prevent a flash of the initial scroll position. The web component uses\n// requestAnimationFrame to invoke the parsedCallback, which sometimes causes a\n// delay in restoring the scroll position. - Aaron, Thu Jun 27 2024\nwindow.addEventListener(\"turbo:render\", () => {\n const elements = document.querySelectorAll(\"persistent-scroll\")\n\n for (const element of elements) {\n element.restoreScrollPosition()\n }\n})\n\nif (!window.customElements.get(\"persistent-scroll\")) {\n window.PersistentScroll = PersistentScroll\n window.customElements.define(\"persistent-scroll\", PersistentScroll)\n}\n", "class PersistentVisibility extends HTMLElement {\n static get observedAttributes() {\n return [\"class\"]\n }\n\n connectedCallback() {\n this.restoreVisibility()\n }\n\n attributeChangedCallback(_attrName, _oldValue, _newValue) {\n const key = this.getStorageKey()\n\n if (this.classList.contains(\"hidden\")) {\n sessionStorage.setItem(key, \"hidden\")\n } else {\n sessionStorage.removeItem(key)\n }\n }\n\n restoreVisibility() {\n const key = this.getStorageKey()\n const visibility = sessionStorage.getItem(key)\n\n if (visibility == \"hidden\") {\n this.classList.add(\"hidden\")\n } else {\n this.classList.remove(\"hidden\")\n }\n }\n\n getStorageKey() {\n let key = this.getAttribute(\"key\")\n key ||= this.id\n\n if (!key) {\n throw new Error(\"persistent-visibility requires a key or id attribute\")\n }\n\n return `persistent-visibility:${key}`\n }\n}\n\nif (!window.customElements.get(\"persistent-visibility\")) {\n window.PersistentVisibility = PersistentVisibility\n window.customElements.define(\"persistent-visibility\", PersistentVisibility)\n}\n", "export default function toggleAttribute(element, name, set) {\n if (set) {\n element.setAttribute(name, \"\")\n } else {\n element.removeAttribute(name)\n }\n}\n", "export function morphdomPreserveAttributes(element, attributes) {\n const formattedAttributes = attributes.join(\" \")\n\n element.dataset.turboMorphPreserveAttributes = formattedAttributes\n}\n\nexport function morphdomCopyPreservedAttributes(fromElement, toElement) {\n const dataset = fromElement.dataset\n const preserveAttributesAttributeName = \"turboMorphPreserveAttributes\"\n\n if (!dataset.hasOwnProperty(preserveAttributesAttributeName)) {\n return\n }\n\n const delimitedAttributes = dataset[preserveAttributesAttributeName]\n let attributes = delimitedAttributes.split(\" \")\n attributes.push(\"data-turbo-morph-preserve-attributes\")\n\n for (let attribute of attributes) {\n const hasAttribute = fromElement.hasAttribute(attribute)\n\n if (hasAttribute) {\n const value = fromElement.getAttribute(attribute)\n toElement.setAttribute(attribute, value)\n } else {\n toElement.removeAttribute(attribute)\n }\n }\n}\n", "export function afterPageRender(callback) {\n requestAnimationFrame(() => {\n requestAnimationFrame(callback)\n })\n}\n", "import HTMLParsedElement from \"html-parsed-element\"\nimport toggleAttribute from \"./toggleAttribute\"\nimport { morphdomPreserveAttributes } from \"web-ui/morphdom/preserve-attributes\"\nimport { afterPageRender } from \"web-ui/after-page-render\"\n\nconst DEFAULT_TOLERANCE = 1;\n\nclass ScrollIndicator extends HTMLParsedElement {\n parsedCallback() {\n this.displayIndicators()\n\n const scrollElement = this.getScrollElement()\n\n if (scrollElement) {\n scrollElement.addEventListener(\"scroll\", () => {\n this.displayIndicators()\n })\n }\n\n this.interval = setInterval(\n () => this.displayIndicators(),\n 150\n )\n\n // The \"loaded\" attribute enables animation, which should not be done until\n // after the initial render so as to avoid a flash\n // - Aaron, Wed Jan 22 2025\n afterPageRender(() => toggleAttribute(this, \"loaded\", true))\n\n morphdomPreserveAttributes(this, [\"loaded\", \"content-below\", \"content-above\", \"class\"])\n }\n\n disconnectedCallback() {\n clearInterval(this.interval)\n }\n\n displayIndicators() {\n const scrollElement = this.getScrollElement()\n\n if (!scrollElement) {\n toggleAttribute(this, \"content-above\", false)\n toggleAttribute(this, \"content-below\", false)\n return\n }\n\n const scrollTop = scrollElement.scrollTop\n const scrollHeight = scrollElement.scrollHeight\n const clientHeight = scrollElement.clientHeight\n const tolerance = this.tolerance\n\n const contentAbove = scrollTop > tolerance\n toggleAttribute(this, \"content-above\", contentAbove)\n\n const contentBelow = Math.abs(scrollHeight - clientHeight - scrollTop) >= tolerance\n toggleAttribute(this, \"content-below\", contentBelow)\n }\n\n getScrollElement() {\n return this.children[0]\n }\n\n get tolerance() {\n let tolerance = this.getAttribute(\"tolerance\")\n\n if (tolerance == null) {\n return DEFAULT_TOLERANCE\n }\n\n return parseInt(tolerance, 10)\n }\n}\n\n// This happens synchronously after turbo does its rendering, which is necessary\n// to prevent a flash of the initial rendering. The web component uses\n// requestAnimationFrame to invoke the parsedCallback, which sometimes causes a\n// delay in determining the scroll position. - Aaron, Thu Jun 27 2024\nwindow.addEventListener(\"turbo:render\", () => {\n const elements = document.querySelectorAll(\"scroll-indicator\")\n\n for (const element of elements) {\n element.displayIndicators()\n }\n})\n\nif (!window.customElements.get(\"scroll-indicator\")) {\n window.ScrollIndicator = ScrollIndicator\n window.customElements.define(\"scroll-indicator\", ScrollIndicator)\n}\n", "export const morphdomIgnoreAttributeName = \"turboMorphIgnore\"\n\nexport function morphdomIgnore(element, ignore) {\n if (ignore) {\n element.dataset.turboMorphIgnore = ''\n } else {\n delete element.dataset.turboMorphIgnore\n }\n}\n\nexport function isMorphdomIgnored(element) {\n return morphdomIgnoreAttributeName in element.dataset\n}\n", "function isDebugEnabled() {\n return window.location.search.match(/\\bdebug\\b/) != undefined\n}\n\nexport function debug(message, data={}) {\n if (!isDebugEnabled()) {\n return\n }\n\n const formattedData = formatData(data)\n\n if (formattedData) {\n message = `${message} (${formattedData})`\n }\n\n console.log(message)\n}\n\nfunction formatData(data) {\n if (Object.keys(data).length == 0) {\n return\n }\n\n const parts = []\n\n for (const [key, value] of Object.entries(data)) {\n const formattedKey = titleCase(key)\n const formattedValue = JSON.stringify(value)\n\n parts.push(`${formattedKey}: ${formattedValue}`)\n }\n\n return parts.join(\", \")\n}\n\nfunction titleCase(text) {\n let titleCased = splitCamelCase(text)\n titleCased = capitalize(titleCased)\n\n return titleCased\n}\n\nfunction splitCamelCase(text) {\n return text.replace(/([A-Z])/g, \" $1\");\n}\n\nfunction capitalize(text) {\n return text.charAt(0).toUpperCase() + text.slice(1);\n}\n", "import HTMLParsedElement from \"html-parsed-element\"\nimport toggleAttribute from \"./toggleAttribute\"\nimport { morphdomIgnore } from \"web-ui/morphdom/ignore\"\nimport { morphdomPreserveAttributes } from \"web-ui/morphdom/preserve-attributes\"\nimport { afterPageRender } from \"web-ui/after-page-render\"\nimport * as Log from \"web-ui/log\"\n\nclass PersistentFooter extends HTMLParsedElement {\n constructor() {\n super()\n\n this.observer = new IntersectionObserver(\n ([event]) => {\n const sentinelVisible = event.isIntersecting\n\n if (sentinelVisible) {\n this.undock()\n } else {\n this.dock()\n }\n\n // The \"loaded\" attribute enables animation, which should not be done until\n // after the initial render so as to avoid a flash\n // - Antoine, Shaun, Mon Mar 17 2025\n if (this.getAttribute(\"loaded\") == null) {\n afterPageRender(() => {\n this.debug(\"Adding loaded class\")\n\n toggleAttribute(this, \"loaded\", true)\n\n this.debug(\"Added loaded class\")\n })\n }\n },\n { threshold: 1 }\n )\n }\n\n parsedCallback() {\n this.debug(\"Parsed\")\n\n this.createAndObserveSentinelElement()\n\n morphdomPreserveAttributes(this, [\"docked\", \"undocked\", \"loaded\"])\n }\n\n disconnectedCallback() {\n this.observer.disconnect()\n this.sentinelElement.remove()\n }\n\n createAndObserveSentinelElement() {\n this.debug(\"Creating and observing sentinel element\")\n\n this.sentinelElement = document.createElement(\"div\")\n this.sentinelElement.classList.add(\"persistent-footer-sentinel\")\n\n morphdomIgnore(this.sentinelElement, true)\n\n this.after(this.sentinelElement)\n\n this.observer.observe(this.sentinelElement)\n\n this.debug(\"Created and observing sentinel element\")\n }\n\n dock() {\n this.debug(\"Docking\", { classes: this.classList.toString() })\n\n toggleAttribute(this, \"docked\", true)\n toggleAttribute(this, \"undocked\", false)\n\n this.debug(\"Docked\", { classes: this.classList.toString() })\n }\n\n undock() {\n this.debug(\"Undocking\", { classes: this.classList.toString() })\n\n toggleAttribute(this, \"undocked\", true)\n toggleAttribute(this, \"docked\", false)\n\n this.debug(\"Undocked\", { classes: this.classList.toString() })\n }\n\n debug(message, data) {\n Log.debug(\"Persistent Footer - \" + message, data)\n }\n}\n\nif (!window.customElements.get(\"persistent-footer\")) {\n window.PersistentFooter = PersistentFooter\n window.customElements.define(\"persistent-footer\", PersistentFooter)\n}\n"], "mappings": "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", "names": ["HTMLParsedElement", "DCL", "init", "queue", "isParsed", "el", "upgrade", "info", "Class", "name", "prototype", "connectedCallback", "method", "cleanUp", "observer", "ownerDocument", "onDCL", "parsedCallback", "self", "html_parsed_element_default", "weekdays", "months", "pad", "num", "flag", "strftime", "time", "directiveFormat", "day", "date", "month", "year", "hour", "minute", "second", "directiveCaptures", "directiveReplacements", "_match", "modifier", "LocalTimeElement", "html_parsed_element_default", "attrName", "_oldValue", "newValue", "millis", "text", "node", "format", "DEFAULT_ANCHOR_TOLERANCE", "PersistentScroll", "html_parsed_element_default", "key", "scrollPosition", "anchorPosition", "anchored", "bottomPosition", "tolerance", "elements", "element", "PersistentVisibility", "_attrName", "_oldValue", "_newValue", "key", "toggleAttribute", "element", "name", "set", "morphdomPreserveAttributes", "element", "attributes", "formattedAttributes", "afterPageRender", "callback", "DEFAULT_TOLERANCE", "ScrollIndicator", "html_parsed_element_default", "scrollElement", "afterPageRender", "toggleAttribute", "morphdomPreserveAttributes", "scrollTop", "scrollHeight", "clientHeight", "tolerance", "contentAbove", "contentBelow", "elements", "element", "morphdomIgnore", "element", "ignore", "isDebugEnabled", "debug", "message", "data", "formattedData", "formatData", "parts", "key", "value", "formattedKey", "titleCase", "formattedValue", "text", "titleCased", "splitCamelCase", "capitalize", "PersistentFooter", "html_parsed_element_default", "event", "afterPageRender", "toggleAttribute", "morphdomPreserveAttributes", "morphdomIgnore", "message", "data", "debug"] }