{"version":3,"file":"js/app.d8520e7617f11d7dfbe7.js","mappings":"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","sources":["webpack://web/./client/js/lib.js","webpack://web/./client/js/controllers/action_controller.js","webpack://web/./client/js/controllers/clipboard_controller.js","webpack://web/./client/js/controllers/collapse_controller.js","webpack://web/./client/js/controllers/commentform_controller.js","webpack://web/./client/js/controllers/confirm_controller.js","webpack://web/./client/js/controllers/gallery_controller.js","webpack://web/./client/js/controllers/mdeditor_controller.js","webpack://web/./client/js/controllers/selfsubmit_controller.js","webpack://web/./client/js/controllers/spoiler_controller.js","webpack://web/./client/js/controllers/toast_controller.js","webpack://web/./client/js/controllers/toaster_controller.js","webpack://web/./client/js/controllers/toggle_controller.js","webpack://web/./client/js/controllers/ sync \\.js$","webpack://web/./node_modules/@hotwired/stimulus/dist/stimulus.js","webpack://web/./node_modules/bootstrap/js/dist/base-component.js","webpack://web/./node_modules/bootstrap/js/dist/carousel.js","webpack://web/./node_modules/bootstrap/js/dist/collapse.js","webpack://web/./node_modules/bootstrap/js/dist/dom/data.js","webpack://web/./node_modules/bootstrap/js/dist/dom/event-handler.js","webpack://web/./node_modules/bootstrap/js/dist/dom/manipulator.js","webpack://web/./node_modules/bootstrap/js/dist/dom/selector-engine.js","webpack://web/./node_modules/bootstrap/js/dist/util/config.js","webpack://web/./node_modules/bootstrap/js/dist/util/index.js","webpack://web/./node_modules/bootstrap/js/dist/util/swipe.js","webpack://web/./node_modules/htmx.org/dist/htmx.js","webpack://web/./node_modules/hyperscript.org/dist/_hyperscript.min.js","webpack://web/./node_modules/lazysizes/lazysizes.js","webpack://web/./node_modules/mousetrap/mousetrap.js","webpack://web/./node_modules/textarea-markdown-editor/dist/Cursor.new.js","webpack://web/./node_modules/textarea-markdown-editor/dist/bootstrap.js","webpack://web/./node_modules/textarea-markdown-editor/dist/commands.js","webpack://web/./node_modules/textarea-markdown-editor/dist/extensions.js","webpack://web/./node_modules/textarea-markdown-editor/dist/handlers.js","webpack://web/./node_modules/textarea-markdown-editor/dist/types.js","webpack://web/./node_modules/textarea-markdown-editor/dist/utils.js","webpack://web/webpack/bootstrap","webpack://web/webpack/runtime/compat get default export","webpack://web/webpack/runtime/define property getters","webpack://web/webpack/runtime/hasOwnProperty shorthand","webpack://web/webpack/runtime/make namespace object","webpack://web/./node_modules/@justinribeiro/lite-youtube/lite-youtube.js","webpack://web/./client/js/index.js","webpack://web/./node_modules/@hotwired/stimulus-webpack-helpers/dist/stimulus-webpack-helpers.js"],"sourcesContent":["\n\nexport async function runAction(name, dataset, extraFields) {\n const url = `/controls/action/${name}`\n let payload = toPayload(dataset)\n\n if (!!extraFields) {\n payload = { ...payload, ...extraFields }\n }\n\n let headers = {\n 'Content-Type': 'application/json',\n }\n\n\n let addHeadersStr = document.body.getAttribute(\"hx-headers\")\n\n if (addHeadersStr) {\n try {\n let parsed = JSON.parse(addHeadersStr)\n headers = { ...headers, ...parsed}\n } catch(e) {\n console.warn(\"failed to parse additional headers\", e)\n }\n }\n\n let response = await fetch(url, {\n method: 'POST',\n headers: headers,\n body: JSON.stringify(payload),\n })\n\n if (!response.ok) {\n let respBody = await response.text()\n\n if (respBody != \"\") {\n try {\n respBody = JSON.parse(respBody)\n } catch(e){}\n } else {\n respBody = `Unknown error: Failed with response code ${response.status}`\n }\n\n throw respBody;\n }\n\n let j = await response.json()\n return j\n}\n\nexport function reloadPage() {\n window.location.reload()\n}\n\nexport function reportError(err) {\n let payload = err\n\n if (!payload.explanation) {\n payload = {\n explanation: payload\n }\n }\n\n htmx.trigger('body', \"operation:error\", payload)\n}\n\nfunction toPayload(dataset) {\n let out = {}\n\n for (let k in dataset) {\n if (k === \"action\" || k === \"controller\" || k.match(/Value$/)) {\n continue\n }\n\n out[k] = dataset[k]\n }\n\n return out\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport { runAction, reloadPage, reportError } from \"../lib\"\n\nexport default class extends Controller {\n static values = {\n action: String,\n prompt: String,\n promptField: String,\n }\n\n run(event) {\n event.preventDefault()\n\n let extraFields = null\n\n if (!!this.promptValue) {\n if (this.promptFieldValue !==\"\") {\n const promptResult = prompt(this.promptValue)\n\n if (promptResult === null) {\n return\n }\n\n extraFields = {\n [this.promptFieldValue]: promptResult,\n }\n } else if (!confirm(this.promptValue)) {\n return\n }\n }\n\n runAction(this.actionValue, this.element.dataset, extraFields)\n .then(reloadPage, reportError)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = {\n copy: String,\n }\n\n connect() {\n this.timer = null;\n\n this.element.addEventListener(\"click\", (e) => {\n e.preventDefault()\n this.copy()\n }, false)\n }\n\n copy() {\n clearTimeout(this.timer)\n\n navigator.clipboard.writeText(this.copyValue)\n\n this.element.classList.remove(\"bi-clipboard\")\n this.element.classList.add(\"bi-check2\")\n\n setTimeout(() => {\n this.element.classList.remove(\"bi-check2\")\n this.element.classList.add(\"bi-clipboard\")\n }, 300)\n }\n}\n","import Collapse from 'bootstrap/js/dist/collapse';\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n new Collapse(this.element, { toggle: false })\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n this.handler = (e) => {\n if (e.keyCode == 13 && (e.ctrlKey || e.metaKey)) {\n htmx.trigger(this.element, \"submit\")\n }\n }\n\n this.element.addEventListener(\"keydown\", this.handler)\n }\n\n disconnect() {\n this.element.removeEventListener(\"keydown\", this.handler)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = {\n message: String\n }\n\n connect() {\n this.element.addEventListener(\"click\", (e) => {\n if (!window.confirm(this.messageValue)) {\n e.preventDefault()\n e.stopPropagation()\n }\n }, false)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport Carousel from 'bootstrap/js/dist/carousel';\n\nfunction generateDocumentFragment(id) {\n let html = `
\n
\n
\n \n \n
`\n\n var tmpl = document.createElement('template');\n tmpl.innerHTML = html;\n return tmpl.content;\n}\n\nfunction addNewItem(inner, fragmentItemsContainer, currentImg, currentCaption, seenFirstItem) {\n // new image means we should create a card out of the previous one and push it into gallery\n let itemContainer = document.createElement(\"div\")\n itemContainer.classList.add(\"carousel-item\")\n if (!seenFirstItem) {\n itemContainer.classList.add(\"active\")\n }\n\n currentImg.className = \"d-block w-auto m-auto img-gallery\"\n itemContainer.appendChild(currentImg)\n\n if (currentCaption.length > 0) {\n let captionContainer = document.createElement(\"div\")\n captionContainer.className = \"carousel-caption d-none d-md-block\"\n\n for (let p of currentCaption) {\n captionContainer.appendChild(p)\n }\n\n itemContainer.appendChild(captionContainer)\n }\n\n fragmentItemsContainer.appendChild(itemContainer)\n}\n\nexport default class extends Controller {\n static values = {\n }\n\n connect() {\n this.initHTML()\n this.carousel = new Carousel(this.element.querySelector(\".carousel\"))\n }\n\n initHTML() {\n this.cachedHTML = this.element.innerHTML\n const generatedID = (\"gallery-\" + Math.random()).replace(\".\",\"\")\n let fragment = generateDocumentFragment(generatedID)\n let fragmentItemsContainer = fragment.querySelector(\".carousel-inner\")\n\n let inner = this.element.querySelector(\".block-container-edit-preview-gallery-content, .block-container-gallery-content\")\n let paragraphs = inner.children\n\n let seenFirstItem = false\n let currentImg = null\n let currentCaption = []\n\n // this is a live html collection,\n // whenever we take the node out\n // it gets modified and an ordinary loop would screw us\n while (paragraphs.length > 0) {\n let p = paragraphs.item(0)\n let img = p.querySelector(\"img\")\n\n if (!img) {\n // any leading paragraphs without photo cannot be used as captions, hence we're simply\n // pushing htem outside of gallery\n\n if (!currentImg) {\n fragment.prepend(p)\n continue\n }\n\n // otherwise all paragraphs following the image form a caption\n currentCaption.push(p)\n inner.removeChild(p)\n continue\n }\n\n if (!currentImg) {\n currentImg = img\n inner.removeChild(p)\n continue\n }\n\n addNewItem(inner, fragmentItemsContainer, currentImg, currentCaption, seenFirstItem)\n inner.removeChild(p)\n seenFirstItem = true\n currentImg = img\n currentCaption = []\n }\n\n if (currentImg) {\n addNewItem(inner, fragmentItemsContainer, currentImg, currentCaption, seenFirstItem)\n }\n\n this.element.innerHTML = ''\n this.element.appendChild(fragment)\n }\n\n disconnect() {\n this.element.innerHTML = this.cachedHTML\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport { bootstrapTextareaMarkdown } from \"textarea-markdown-editor/dist/bootstrap\";\n\nfunction sleep(ms) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\nexport default class extends Controller {\n static values = {\n upload: String,\n }\n\n connect() {\n let textarea = this.element.querySelector(\"textarea\")\n const { trigger, dispose, cursor } = bootstrapTextareaMarkdown(textarea, {\n options: {\n enableLinkPasteExtension: false,\n enablePrefixWrappingExtension: true,\n customPrefixWrapping: ['*'],\n }\n });\n\n this.dispose = dispose\n this.element.classList.add(\"mdeditor\")\n\n {\n const div = document.createElement(\"div\")\n div.innerHTML = `
Media is being uploaded
`\n\n const loader = div.firstChild\n this.element.prepend(loader);\n }\n\n // emulate disabled state during image upload\n textarea.addEventListener(\"keydown\", (e) => {\n if (this.element.classList.contains(\"mdeditor--loading\")) {\n e.preventDefault()\n }\n }, false)\n\n let insertTag = (tag) => {\n let placeholder\n\n switch (tag) {\n case \"gallery\":\n placeholder = \"Add a list of images there\"\n break;\n case \"spoiler\":\n placeholder = \"This text will be collapsed by default\"\n break;\n case \"cut\":\n placeholder = \"This text won't be visible in the feed but will be shown on the full past page\"\n break;\n default:\n trigger(cmd)\n }\n\n cursor.wrap([`\\n{${tag}}\\n`, `\\n{/${tag}}\\n\\n`], { placeholder });\n }\n\n let runCmd = function(cmd, e) {\n e.preventDefault()\n\n switch (cmd) {\n case \"gallery\":\n case \"spoiler\":\n case \"cut\":\n insertTag(cmd)\n break;\n default:\n trigger(cmd)\n }\n\n htmx.trigger(textarea, \"change\")\n }\n\n if (this.uploadValue) {\n let upload = this.element.querySelector(\"input[type=file]\")\n\n const uploadFile = async(file) => {\n const formData = new FormData();\n\n let headers = { }\n\n\n let addHeadersStr = document.body.getAttribute(\"hx-headers\")\n\n if (addHeadersStr) {\n try {\n let parsed = JSON.parse(addHeadersStr)\n headers = { ...headers, ...parsed}\n } catch(e) {\n console.warn(\"failed to parse additional headers\", e)\n }\n }\n\n formData.append('file', file);\n\n try {\n let response = await fetch(this.uploadValue, {\n method: 'POST',\n headers: headers,\n body: formData\n })\n\n if (!response.ok) {\n let respBody = await response.json();\n throw respBody;\n }\n\n let j = await response.json()\n return j.uploaded_url;\n } catch (e) {\n htmx.trigger('body', \"operation:error\", e)\n }\n }\n\n const uploadFiles = async(files) => {\n this.element.classList.add(\"mdeditor--loading\")\n\n let promises = [];\n\n for (let file of files) {\n if (!file.type.startsWith('image/')){ continue }\n\n if (cursor.position.line.text) {\n cursor.insert('\\n'); // wrap to next line if some line is not empty\n }\n const loadingPlaceholder = `[uploading (${file.name})...${Math.random()}]`;\n cursor.insert('\\n' + loadingPlaceholder + '\\n');\n\n let prom = uploadFile(file).then((resultUrl) => {\n textarea.value = cursor.value.replace(loadingPlaceholder, `![${file.name}](${resultUrl})`)\n }).catch((e) => {\n console.log(\"image upload failure:\" , e)\n });\n\n promises.push(prom)\n }\n\n htmx.trigger(textarea, \"change\")\n\n await Promise.all(promises)\n upload.value = null;\n this.element.classList.remove(\"mdeditor--loading\")\n }\n\n const handler = async () => {\n uploadFiles(upload.files ?? [])\n };\n\n upload.addEventListener('change', handler, false);\n\n this.element.addEventListener('dragenter', function(e) {\n e.stopPropagation()\n e.preventDefault()\n }, false)\n\n this.element.addEventListener('dragover', function(e) {\n e.stopPropagation()\n e.preventDefault()\n }, false)\n\n this.element.addEventListener('drop', function(e) {\n e.stopPropagation()\n e.preventDefault()\n\n const dt = e.dataTransfer\n const files = dt.files\n\n uploadFiles(files)\n }, false)\n\n textarea.addEventListener('paste', (e) => {\n uploadFiles(e.clipboardData.files)\n }, false)\n }\n\n\n for (let btn of this.element.querySelectorAll(\"[data-command]\")) {\n let cmd = btn.dataset.command\n\n btn.addEventListener(\"click\", runCmd.bind(null, cmd), false)\n }\n\n let showPreview = this.element.querySelector(\"#show_preview\");\n\n if (showPreview) {\n htmx.on(\"draft_saved\", (ev) => {\n showPreview.classList.remove(\"d-none\");\n showPreview.href = ev.detail.url\n })\n }\n }\n\n disconnect() {\n this.dispose()\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n this.target = document.querySelector(this.targetValue)\n let targetEl = document.querySelector(`${this.targetValue} [role=close]`)\n\n this.element.addEventListener(\"change\", (e) => {\n if (this.element.value != \"\") {\n this.element.form.submit()\n }\n }, false)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = { }\n\n connect() {\n this.target = this.element.querySelector(\".block-container-spoiler-summary\")\n this.content = this.element.querySelector(\".block-container-spoiler-content\")\n\n this.target.addEventListener(\"click\", (e) => {\n e.preventDefault()\n this.show()\n }, false)\n }\n\n show() {\n this.content.classList.add(\"show\")\n this.target.classList.add(\"d-none\")\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n this.element.querySelector(\"[data-bs-dismiss]\").addEventListener('click', (e) => {\n this.element.parentNode.removeChild(this.element)\n }, false)\n\n this.timer = setTimeout(() => {\n this.element.parentNode.removeChild(this.element)\n }, 10_000)\n }\n\n disconnect() {\n clearTimeout(this.timer)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nfunction generateToast(type, msg) {\n let html = `
\n
\n
${msg}
\n \n
\n
`\n\n var tmpl = document.createElement('template');\n tmpl.innerHTML = html;\n return tmpl.content;\n}\n\n\nexport default class extends Controller {\n static values = {\n upload: String,\n }\n\n connect() {\n\n let handler = (type) => {\n return (e) => {\n this.element.appendChild(generateToast(type, e.detail.explanation))\n }\n }\n\n this.success = handler(\"success\")\n this.error = handler(\"danger\")\n\n htmx.on(\"operation:success\", this.success)\n htmx.on(\"operation:error\", this.error)\n }\n\n disconnect() {\n htmx.off(\"operation:success\", this.success)\n htmx.off(\"operation:error\", this.error)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = {\n target: String,\n focus: String,\n hideTarget: Boolean\n }\n\n connect() {\n this.target = document.querySelector(this.targetValue)\n let targetEl = document.querySelector(`${this.targetValue} [role=close]`)\n\n this.element.addEventListener(\"click\", (e) => {\n e.preventDefault()\n this.toggle()\n }, false)\n targetEl.addEventListener(\"click\", () => this.hide(), false)\n }\n\n show() {\n this.target.classList.add(\"show\")\n\n if (this.focusValue) {\n document.querySelector(this.focusValue).focus()\n }\n\n if (this.hideTargetValue) {\n this.element.classList.add(\"d-none\")\n }\n }\n\n hide() {\n this.target.classList.remove(\"show\")\n\n if (this.hideTargetValue) {\n this.element.classList.remove(\"d-none\")\n }\n }\n\n toggle() {\n if (this.target.classList.contains(\"show\")) {\n this.hide()\n return\n }\n\n this.show()\n }\n}\n","var map = {\n\t\"./action_controller.js\": 717,\n\t\"./clipboard_controller.js\": 605,\n\t\"./collapse_controller.js\": 880,\n\t\"./commentform_controller.js\": 631,\n\t\"./confirm_controller.js\": 456,\n\t\"./gallery_controller.js\": 548,\n\t\"./mdeditor_controller.js\": 25,\n\t\"./selfsubmit_controller.js\": 118,\n\t\"./spoiler_controller.js\": 160,\n\t\"./toast_controller.js\": 965,\n\t\"./toaster_controller.js\": 572,\n\t\"./toggle_controller.js\": 804\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 445;","/*\nStimulus 3.2.0\nCopyright © 2022 Basecamp, LLC\n */\nclass EventListener {\n constructor(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n bindingDisconnected(binding) {\n this.unorderedBindings.delete(binding);\n }\n handleEvent(event) {\n const extendedEvent = extendEvent(event);\n for (const binding of this.bindings) {\n if (extendedEvent.immediatePropagationStopped) {\n break;\n }\n else {\n binding.handleEvent(extendedEvent);\n }\n }\n }\n hasBindings() {\n return this.unorderedBindings.size > 0;\n }\n get bindings() {\n return Array.from(this.unorderedBindings).sort((left, right) => {\n const leftIndex = left.index, rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n }\n}\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n }\n else {\n const { stopImmediatePropagation } = event;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation.call(this);\n },\n });\n }\n}\n\nclass Dispatcher {\n constructor(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach((eventListener) => eventListener.connect());\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach((eventListener) => eventListener.disconnect());\n }\n }\n get eventListeners() {\n return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n }\n bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n bindingDisconnected(binding, clearEventListeners = false) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n if (clearEventListeners)\n this.clearEventListenersForBinding(binding);\n }\n handleError(error, message, detail = {}) {\n this.application.handleError(error, `Error ${message}`, detail);\n }\n clearEventListenersForBinding(binding) {\n const eventListener = this.fetchEventListenerForBinding(binding);\n if (!eventListener.hasBindings()) {\n eventListener.disconnect();\n this.removeMappedEventListenerFor(binding);\n }\n }\n removeMappedEventListenerFor(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n eventListenerMap.delete(cacheKey);\n if (eventListenerMap.size == 0)\n this.eventListenerMaps.delete(eventTarget);\n }\n fetchEventListenerForBinding(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n }\n fetchEventListener(eventTarget, eventName, eventOptions) {\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n let eventListener = eventListenerMap.get(cacheKey);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n return eventListener;\n }\n createEventListener(eventTarget, eventName, eventOptions) {\n const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n }\n fetchEventListenerMapForEventTarget(eventTarget) {\n let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n }\n cacheKey(eventName, eventOptions) {\n const parts = [eventName];\n Object.keys(eventOptions)\n .sort()\n .forEach((key) => {\n parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n });\n return parts.join(\":\");\n }\n}\n\nconst defaultActionDescriptorFilters = {\n stop({ event, value }) {\n if (value)\n event.stopPropagation();\n return true;\n },\n prevent({ event, value }) {\n if (value)\n event.preventDefault();\n return true;\n },\n self({ event, value, element }) {\n if (value) {\n return element === event.target;\n }\n else {\n return true;\n }\n },\n};\nconst descriptorPattern = /^(?:(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n const source = descriptorString.trim();\n const matches = source.match(descriptorPattern) || [];\n return {\n eventTarget: parseEventTarget(matches[3]),\n eventName: matches[1],\n eventOptions: matches[6] ? parseEventOptions(matches[6]) : {},\n identifier: matches[4],\n methodName: matches[5],\n keyFilter: matches[2],\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n }\n else if (eventTargetName == \"document\") {\n return document;\n }\n}\nfunction parseEventOptions(eventOptions) {\n return eventOptions\n .split(\":\")\n .reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n }\n else if (eventTarget == document) {\n return \"document\";\n }\n}\n\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n return value.match(/[^\\s]+/g) || [];\n}\n\nclass Action {\n constructor(element, index, descriptor, schema) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n this.keyFilter = descriptor.keyFilter || \"\";\n this.schema = schema;\n }\n static forToken(token, schema) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n }\n toString() {\n const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n }\n isFilterTarget(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filteres = this.keyFilter.split(\"+\");\n const modifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\n const [meta, ctrl, alt, shift] = modifiers.map((modifier) => filteres.includes(modifier));\n if (event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift) {\n return true;\n }\n const standardFilter = filteres.filter((key) => !modifiers.includes(key))[0];\n if (!standardFilter) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(this.keyMappings, standardFilter)) {\n error(`contains unkown key filter: ${this.keyFilter}`);\n }\n return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n }\n get params() {\n const params = {};\n const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n for (const { name, value } of Array.from(this.element.attributes)) {\n const match = name.match(pattern);\n const key = match && match[1];\n if (key) {\n params[camelize(key)] = typecast(value);\n }\n }\n return params;\n }\n get eventTargetName() {\n return stringifyEventTarget(this.eventTarget);\n }\n get keyMappings() {\n return this.schema.keyMappings;\n }\n}\nconst defaultEventNames = {\n a: () => \"click\",\n button: () => \"click\",\n form: () => \"submit\",\n details: () => \"toggle\",\n input: (e) => (e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\"),\n select: () => \"change\",\n textarea: () => \"input\",\n};\nfunction getDefaultEventNameForElement(element) {\n const tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n }\n catch (o_O) {\n return value;\n }\n}\n\nclass Binding {\n constructor(context, action) {\n this.context = context;\n this.action = action;\n }\n get index() {\n return this.action.index;\n }\n get eventTarget() {\n return this.action.eventTarget;\n }\n get eventOptions() {\n return this.action.eventOptions;\n }\n get identifier() {\n return this.context.identifier;\n }\n handleEvent(event) {\n if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(event)) {\n this.invokeWithEvent(event);\n }\n }\n get eventName() {\n return this.action.eventName;\n }\n get method() {\n const method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n }\n applyEventModifiers(event) {\n const { element } = this.action;\n const { actionDescriptorFilters } = this.context.application;\n let passes = true;\n for (const [name, value] of Object.entries(this.eventOptions)) {\n if (name in actionDescriptorFilters) {\n const filter = actionDescriptorFilters[name];\n passes = passes && filter({ name, value, event, element });\n }\n else {\n continue;\n }\n }\n return passes;\n }\n invokeWithEvent(event) {\n const { target, currentTarget } = event;\n try {\n const { params } = this.action;\n const actionEvent = Object.assign(event, { params });\n this.method.call(this.controller, actionEvent);\n this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n }\n catch (error) {\n const { identifier, controller, element, index } = this;\n const detail = { identifier, controller, element, index, event };\n this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n }\n }\n willBeInvokedByEvent(event) {\n const eventTarget = event.target;\n if (event instanceof KeyboardEvent && this.action.isFilterTarget(event)) {\n return false;\n }\n if (this.element === eventTarget) {\n return true;\n }\n else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n }\n else {\n return this.scope.containsElement(this.action.element);\n }\n }\n get controller() {\n return this.context.controller;\n }\n get methodName() {\n return this.action.methodName;\n }\n get element() {\n return this.scope.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nclass ElementObserver {\n constructor(element, delegate) {\n this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.refresh();\n }\n }\n pause(callback) {\n if (this.started) {\n this.mutationObserver.disconnect();\n this.started = false;\n }\n callback();\n if (!this.started) {\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n const matches = new Set(this.matchElementsInTree());\n for (const element of Array.from(this.elements)) {\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (const element of Array.from(matches)) {\n this.addElement(element);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n }\n else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n }\n processAttributeChange(node, attributeName) {\n const element = node;\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n }\n else {\n this.removeElement(element);\n }\n }\n else if (this.matchElement(element)) {\n this.addElement(element);\n }\n }\n processRemovedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n processAddedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n matchElement(element) {\n return this.delegate.matchElement(element);\n }\n matchElementsInTree(tree = this.element) {\n return this.delegate.matchElementsInTree(tree);\n }\n processTree(tree, processor) {\n for (const element of this.matchElementsInTree(tree)) {\n processor.call(this, element);\n }\n }\n elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n }\n else {\n return this.element.contains(element);\n }\n }\n addElement(element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n }\n removeElement(element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n }\n}\n\nclass AttributeObserver {\n constructor(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n get element() {\n return this.elementObserver.element;\n }\n get selector() {\n return `[${this.attributeName}]`;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get started() {\n return this.elementObserver.started;\n }\n matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n }\n elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n}\n\nfunction add(map, key, value) {\n fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nfunction fetch(map, key) {\n let values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nfunction prune(map, key) {\n const values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\n\nclass Multimap {\n constructor() {\n this.valuesByKey = new Map();\n }\n get keys() {\n return Array.from(this.valuesByKey.keys());\n }\n get values() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n }\n get size() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((size, set) => size + set.size, 0);\n }\n add(key, value) {\n add(this.valuesByKey, key, value);\n }\n delete(key, value) {\n del(this.valuesByKey, key, value);\n }\n has(key, value) {\n const values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n }\n hasKey(key) {\n return this.valuesByKey.has(key);\n }\n hasValue(value) {\n const sets = Array.from(this.valuesByKey.values());\n return sets.some((set) => set.has(value));\n }\n getValuesForKey(key) {\n const values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n }\n getKeysForValue(value) {\n return Array.from(this.valuesByKey)\n .filter(([_key, values]) => values.has(value))\n .map(([key, _values]) => key);\n }\n}\n\nclass IndexedMultimap extends Multimap {\n constructor() {\n super();\n this.keysByValue = new Map();\n }\n get values() {\n return Array.from(this.keysByValue.keys());\n }\n add(key, value) {\n super.add(key, value);\n add(this.keysByValue, value, key);\n }\n delete(key, value) {\n super.delete(key, value);\n del(this.keysByValue, value, key);\n }\n hasValue(value) {\n return this.keysByValue.has(value);\n }\n getKeysForValue(value) {\n const set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n }\n}\n\nclass SelectorObserver {\n constructor(element, selector, delegate, details = {}) {\n this.selector = selector;\n this.details = details;\n this.elementObserver = new ElementObserver(element, this);\n this.delegate = delegate;\n this.matchesByElement = new Multimap();\n }\n get started() {\n return this.elementObserver.started;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get element() {\n return this.elementObserver.element;\n }\n matchElement(element) {\n const matches = element.matches(this.selector);\n if (this.delegate.selectorMatchElement) {\n return matches && this.delegate.selectorMatchElement(element, this.details);\n }\n return matches;\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector)).filter((match) => this.matchElement(match));\n return match.concat(matches);\n }\n elementMatched(element) {\n this.selectorMatched(element);\n }\n elementUnmatched(element) {\n this.selectorUnmatched(element);\n }\n elementAttributeChanged(element, _attributeName) {\n const matches = this.matchElement(element);\n const matchedBefore = this.matchesByElement.has(this.selector, element);\n if (!matches && matchedBefore) {\n this.selectorUnmatched(element);\n }\n }\n selectorMatched(element) {\n if (this.delegate.selectorMatched) {\n this.delegate.selectorMatched(element, this.selector, this.details);\n this.matchesByElement.add(this.selector, element);\n }\n }\n selectorUnmatched(element) {\n this.delegate.selectorUnmatched(element, this.selector, this.details);\n this.matchesByElement.delete(this.selector, element);\n }\n}\n\nclass StringMapObserver {\n constructor(element, delegate) {\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n this.refresh();\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n for (const attributeName of this.knownAttributeNames) {\n this.refreshAttribute(attributeName, null);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n const attributeName = mutation.attributeName;\n if (attributeName) {\n this.refreshAttribute(attributeName, mutation.oldValue);\n }\n }\n refreshAttribute(attributeName, oldValue) {\n const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n const value = this.element.getAttribute(attributeName);\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key, oldValue);\n }\n if (value == null) {\n const oldValue = this.stringMap.get(attributeName);\n this.stringMap.delete(attributeName);\n if (oldValue)\n this.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n else {\n this.stringMap.set(attributeName, value);\n }\n }\n }\n stringMapKeyAdded(key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n }\n stringMapValueChanged(value, key, oldValue) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key, oldValue);\n }\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n }\n get knownAttributeNames() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n }\n get currentAttributeNames() {\n return Array.from(this.element.attributes).map((attribute) => attribute.name);\n }\n get recordedAttributeNames() {\n return Array.from(this.stringMap.keys());\n }\n}\n\nclass TokenListObserver {\n constructor(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n get started() {\n return this.attributeObserver.started;\n }\n start() {\n this.attributeObserver.start();\n }\n pause(callback) {\n this.attributeObserver.pause(callback);\n }\n stop() {\n this.attributeObserver.stop();\n }\n refresh() {\n this.attributeObserver.refresh();\n }\n get element() {\n return this.attributeObserver.element;\n }\n get attributeName() {\n return this.attributeObserver.attributeName;\n }\n elementMatchedAttribute(element) {\n this.tokensMatched(this.readTokensForElement(element));\n }\n elementAttributeValueChanged(element) {\n const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n }\n elementUnmatchedAttribute(element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n }\n tokensMatched(tokens) {\n tokens.forEach((token) => this.tokenMatched(token));\n }\n tokensUnmatched(tokens) {\n tokens.forEach((token) => this.tokenUnmatched(token));\n }\n tokenMatched(token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n }\n tokenUnmatched(token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n }\n refreshTokensForElement(element) {\n const previousTokens = this.tokensByElement.getValuesForKey(element);\n const currentTokens = this.readTokensForElement(element);\n const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n if (firstDifferingIndex == -1) {\n return [[], []];\n }\n else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n }\n readTokensForElement(element) {\n const attributeName = this.attributeName;\n const tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString\n .trim()\n .split(/\\s+/)\n .filter((content) => content.length)\n .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n const length = Math.max(left.length, right.length);\n return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n constructor(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n get started() {\n return this.tokenListObserver.started;\n }\n start() {\n this.tokenListObserver.start();\n }\n stop() {\n this.tokenListObserver.stop();\n }\n refresh() {\n this.tokenListObserver.refresh();\n }\n get element() {\n return this.tokenListObserver.element;\n }\n get attributeName() {\n return this.tokenListObserver.attributeName;\n }\n tokenMatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n }\n tokenUnmatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n }\n fetchParseResultForToken(token) {\n let parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n }\n fetchValuesByTokenForElement(element) {\n let valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n }\n parseToken(token) {\n try {\n const value = this.delegate.parseValueForToken(token);\n return { value };\n }\n catch (error) {\n return { error };\n }\n }\n}\n\nclass BindingObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n start() {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n }\n stop() {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n }\n get element() {\n return this.context.element;\n }\n get identifier() {\n return this.context.identifier;\n }\n get actionAttribute() {\n return this.schema.actionAttribute;\n }\n get schema() {\n return this.context.schema;\n }\n get bindings() {\n return Array.from(this.bindingsByAction.values());\n }\n connectAction(action) {\n const binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n }\n disconnectAction(action) {\n const binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n }\n disconnectAllActions() {\n this.bindings.forEach((binding) => this.delegate.bindingDisconnected(binding, true));\n this.bindingsByAction.clear();\n }\n parseValueForToken(token) {\n const action = Action.forToken(token, this.schema);\n if (action.identifier == this.identifier) {\n return action;\n }\n }\n elementMatchedValue(element, action) {\n this.connectAction(action);\n }\n elementUnmatchedValue(element, action) {\n this.disconnectAction(action);\n }\n}\n\nclass ValueObserver {\n constructor(context, receiver) {\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n }\n start() {\n this.stringMapObserver.start();\n this.invokeChangedCallbacksForDefaultValues();\n }\n stop() {\n this.stringMapObserver.stop();\n }\n get element() {\n return this.context.element;\n }\n get controller() {\n return this.context.controller;\n }\n getStringMapKeyForAttribute(attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n }\n stringMapKeyAdded(key, attributeName) {\n const descriptor = this.valueDescriptorMap[attributeName];\n if (!this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n }\n }\n stringMapValueChanged(value, name, oldValue) {\n const descriptor = this.valueDescriptorNameMap[name];\n if (value === null)\n return;\n if (oldValue === null) {\n oldValue = descriptor.writer(descriptor.defaultValue);\n }\n this.invokeChangedCallback(name, value, oldValue);\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n const descriptor = this.valueDescriptorNameMap[key];\n if (this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n }\n else {\n this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n }\n }\n invokeChangedCallbacksForDefaultValues() {\n for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallback(name, writer(defaultValue), undefined);\n }\n }\n }\n invokeChangedCallback(name, rawValue, rawOldValue) {\n const changedMethodName = `${name}Changed`;\n const changedMethod = this.receiver[changedMethodName];\n if (typeof changedMethod == \"function\") {\n const descriptor = this.valueDescriptorNameMap[name];\n try {\n const value = descriptor.reader(rawValue);\n let oldValue = rawOldValue;\n if (rawOldValue) {\n oldValue = descriptor.reader(rawOldValue);\n }\n changedMethod.call(this.receiver, value, oldValue);\n }\n catch (error) {\n if (error instanceof TypeError) {\n error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n }\n throw error;\n }\n }\n }\n get valueDescriptors() {\n const { valueDescriptorMap } = this;\n return Object.keys(valueDescriptorMap).map((key) => valueDescriptorMap[key]);\n }\n get valueDescriptorNameMap() {\n const descriptors = {};\n Object.keys(this.valueDescriptorMap).forEach((key) => {\n const descriptor = this.valueDescriptorMap[key];\n descriptors[descriptor.name] = descriptor;\n });\n return descriptors;\n }\n hasValue(attributeName) {\n const descriptor = this.valueDescriptorNameMap[attributeName];\n const hasMethodName = `has${capitalize(descriptor.name)}`;\n return this.receiver[hasMethodName];\n }\n}\n\nclass TargetObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.targetsByName = new Multimap();\n }\n start() {\n if (!this.tokenListObserver) {\n this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n this.tokenListObserver.start();\n }\n }\n stop() {\n if (this.tokenListObserver) {\n this.disconnectAllTargets();\n this.tokenListObserver.stop();\n delete this.tokenListObserver;\n }\n }\n tokenMatched({ element, content: name }) {\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n tokenUnmatched({ element, content: name }) {\n this.disconnectTarget(element, name);\n }\n connectTarget(element, name) {\n var _a;\n if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n }\n }\n disconnectTarget(element, name) {\n var _a;\n if (this.targetsByName.has(name, element)) {\n this.targetsByName.delete(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n }\n }\n disconnectAllTargets() {\n for (const name of this.targetsByName.keys) {\n for (const element of this.targetsByName.getValuesForKey(name)) {\n this.disconnectTarget(element, name);\n }\n }\n }\n get attributeName() {\n return `data-${this.context.identifier}-target`;\n }\n get element() {\n return this.context.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce((values, constructor) => {\n getOwnStaticArrayValues(constructor, propertyName).forEach((name) => values.add(name));\n return values;\n }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce((pairs, constructor) => {\n pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n return pairs;\n }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n const ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n const definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n const definition = constructor[propertyName];\n return definition ? Object.keys(definition).map((key) => [key, definition[key]]) : [];\n}\n\nclass OutletObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.outletsByName = new Multimap();\n this.outletElementsByName = new Multimap();\n this.selectorObserverMap = new Map();\n }\n start() {\n if (this.selectorObserverMap.size === 0) {\n this.outletDefinitions.forEach((outletName) => {\n const selector = this.selector(outletName);\n const details = { outletName };\n if (selector) {\n this.selectorObserverMap.set(outletName, new SelectorObserver(document.body, selector, this, details));\n }\n });\n this.selectorObserverMap.forEach((observer) => observer.start());\n }\n this.dependentContexts.forEach((context) => context.refresh());\n }\n stop() {\n if (this.selectorObserverMap.size > 0) {\n this.disconnectAllOutlets();\n this.selectorObserverMap.forEach((observer) => observer.stop());\n this.selectorObserverMap.clear();\n }\n }\n refresh() {\n this.selectorObserverMap.forEach((observer) => observer.refresh());\n }\n selectorMatched(element, _selector, { outletName }) {\n const outlet = this.getOutlet(element, outletName);\n if (outlet) {\n this.connectOutlet(outlet, element, outletName);\n }\n }\n selectorUnmatched(element, _selector, { outletName }) {\n const outlet = this.getOutletFromMap(element, outletName);\n if (outlet) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n selectorMatchElement(element, { outletName }) {\n return (this.hasOutlet(element, outletName) &&\n element.matches(`[${this.context.application.schema.controllerAttribute}~=${outletName}]`));\n }\n connectOutlet(outlet, element, outletName) {\n var _a;\n if (!this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.add(outletName, outlet);\n this.outletElementsByName.add(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n }\n }\n disconnectOutlet(outlet, element, outletName) {\n var _a;\n if (this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.delete(outletName, outlet);\n this.outletElementsByName.delete(outletName, element);\n (_a = this.selectorObserverMap\n .get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n }\n }\n disconnectAllOutlets() {\n for (const outletName of this.outletElementsByName.keys) {\n for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n }\n }\n selector(outletName) {\n return this.scope.outlets.getSelectorForOutletName(outletName);\n }\n get outletDependencies() {\n const dependencies = new Multimap();\n this.router.modules.forEach((module) => {\n const constructor = module.definition.controllerConstructor;\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n outlets.forEach((outlet) => dependencies.add(outlet, module.identifier));\n });\n return dependencies;\n }\n get outletDefinitions() {\n return this.outletDependencies.getKeysForValue(this.identifier);\n }\n get dependentControllerIdentifiers() {\n return this.outletDependencies.getValuesForKey(this.identifier);\n }\n get dependentContexts() {\n const identifiers = this.dependentControllerIdentifiers;\n return this.router.contexts.filter((context) => identifiers.includes(context.identifier));\n }\n hasOutlet(element, outletName) {\n return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n }\n getOutlet(element, outletName) {\n return this.application.getControllerForElementAndIdentifier(element, outletName);\n }\n getOutletFromMap(element, outletName) {\n return this.outletsByName.getValuesForKey(outletName).find((outlet) => outlet.element === element);\n }\n get scope() {\n return this.context.scope;\n }\n get identifier() {\n return this.context.identifier;\n }\n get application() {\n return this.context.application;\n }\n get router() {\n return this.application.router;\n }\n}\n\nclass Context {\n constructor(module, scope) {\n this.logDebugActivity = (functionName, detail = {}) => {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.logDebugActivity(this.identifier, functionName, detail);\n };\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n this.targetObserver = new TargetObserver(this, this);\n this.outletObserver = new OutletObserver(this, this);\n try {\n this.controller.initialize();\n this.logDebugActivity(\"initialize\");\n }\n catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n connect() {\n this.bindingObserver.start();\n this.valueObserver.start();\n this.targetObserver.start();\n this.outletObserver.start();\n try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n }\n catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n }\n refresh() {\n this.outletObserver.refresh();\n }\n disconnect() {\n try {\n this.controller.disconnect();\n this.logDebugActivity(\"disconnect\");\n }\n catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.outletObserver.stop();\n this.targetObserver.stop();\n this.valueObserver.stop();\n this.bindingObserver.stop();\n }\n get application() {\n return this.module.application;\n }\n get identifier() {\n return this.module.identifier;\n }\n get schema() {\n return this.application.schema;\n }\n get dispatcher() {\n return this.application.dispatcher;\n }\n get element() {\n return this.scope.element;\n }\n get parentElement() {\n return this.element.parentElement;\n }\n handleError(error, message, detail = {}) {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.handleError(error, `Error ${message}`, detail);\n }\n targetConnected(element, name) {\n this.invokeControllerMethod(`${name}TargetConnected`, element);\n }\n targetDisconnected(element, name) {\n this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n }\n outletConnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n }\n outletDisconnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n }\n invokeControllerMethod(methodName, ...args) {\n const controller = this.controller;\n if (typeof controller[methodName] == \"function\") {\n controller[methodName](...args);\n }\n }\n}\n\nfunction bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n const shadowConstructor = extend(constructor);\n const shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce((blessedProperties, blessing) => {\n const properties = blessing(constructor);\n for (const key in properties) {\n const descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n return blessedProperties;\n }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce((shadowProperties, key) => {\n const descriptor = getShadowedDescriptor(prototype, properties, key);\n if (descriptor) {\n Object.assign(shadowProperties, { [key]: descriptor });\n }\n return shadowProperties;\n }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n if (!shadowedByValue) {\n const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n return descriptor;\n }\n}\nconst getOwnKeys = (() => {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return (object) => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n }\n else {\n return Object.getOwnPropertyNames;\n }\n})();\nconst extend = (() => {\n function extendWithReflect(constructor) {\n function extended() {\n return Reflect.construct(constructor, arguments, new.target);\n }\n extended.prototype = Object.create(constructor.prototype, {\n constructor: { value: extended },\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\n }\n function testReflectExtension() {\n const a = function () {\n this.a.call(this);\n };\n const b = extendWithReflect(a);\n b.prototype.a = function () { };\n return new b();\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n }\n catch (error) {\n return (constructor) => class extended extends constructor {\n };\n }\n})();\n\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor),\n };\n}\n\nclass Module {\n constructor(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n get identifier() {\n return this.definition.identifier;\n }\n get controllerConstructor() {\n return this.definition.controllerConstructor;\n }\n get contexts() {\n return Array.from(this.connectedContexts);\n }\n connectContextForScope(scope) {\n const context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n }\n disconnectContextForScope(scope) {\n const context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n }\n fetchContextForScope(scope) {\n let context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n }\n}\n\nclass ClassMap {\n constructor(scope) {\n this.scope = scope;\n }\n has(name) {\n return this.data.has(this.getDataKey(name));\n }\n get(name) {\n return this.getAll(name)[0];\n }\n getAll(name) {\n const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n return tokenize(tokenString);\n }\n getAttributeName(name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n }\n getDataKey(name) {\n return `${name}-class`;\n }\n get data() {\n return this.scope.data;\n }\n}\n\nclass DataMap {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n }\n set(key, value) {\n const name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n }\n has(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n }\n delete(key) {\n if (this.has(key)) {\n const name = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name);\n return true;\n }\n else {\n return false;\n }\n }\n getAttributeNameForKey(key) {\n return `data-${this.identifier}-${dasherize(key)}`;\n }\n}\n\nclass Guide {\n constructor(logger) {\n this.warnedKeysByObject = new WeakMap();\n this.logger = logger;\n }\n warn(object, key, message) {\n let warnedKeys = this.warnedKeysByObject.get(object);\n if (!warnedKeys) {\n warnedKeys = new Set();\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(targetName) {\n return this.find(targetName) != null;\n }\n find(...targetNames) {\n return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n }\n findAll(...targetNames) {\n return targetNames.reduce((targets, targetName) => [\n ...targets,\n ...this.findAllTargets(targetName),\n ...this.findAllLegacyTargets(targetName),\n ], []);\n }\n findTarget(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n }\n findAllTargets(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n }\n getSelectorForTargetName(targetName) {\n const attributeName = this.schema.targetAttributeForScope(this.identifier);\n return attributeValueContainsToken(attributeName, targetName);\n }\n findLegacyTarget(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n }\n findAllLegacyTargets(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map((element) => this.deprecate(element, targetName));\n }\n getLegacySelectorForTargetName(targetName) {\n const targetDescriptor = `${this.identifier}.${targetName}`;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n }\n deprecate(element, targetName) {\n if (element) {\n const { identifier } = this;\n const attributeName = this.schema.targetAttribute;\n const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n }\n return element;\n }\n get guide() {\n return this.scope.guide;\n }\n}\n\nclass OutletSet {\n constructor(scope, controllerElement) {\n this.scope = scope;\n this.controllerElement = controllerElement;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(outletName) {\n return this.find(outletName) != null;\n }\n find(...outletNames) {\n return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n }\n findAll(...outletNames) {\n return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n }\n getSelectorForOutletName(outletName) {\n const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n return this.controllerElement.getAttribute(attributeName);\n }\n findOutlet(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n if (selector)\n return this.findElement(selector, outletName);\n }\n findAllOutlets(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n return selector ? this.findAllElements(selector, outletName) : [];\n }\n findElement(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName))[0];\n }\n findAllElements(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName));\n }\n matchesElement(element, selector, outletName) {\n const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n }\n}\n\nclass Scope {\n constructor(schema, element, identifier, logger) {\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n this.containsElement = (element) => {\n return element.closest(this.controllerSelector) === this.element;\n };\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n this.outlets = new OutletSet(this.documentScope, element);\n }\n findElement(selector) {\n return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n }\n findAllElements(selector) {\n return [\n ...(this.element.matches(selector) ? [this.element] : []),\n ...this.queryElements(selector).filter(this.containsElement),\n ];\n }\n queryElements(selector) {\n return Array.from(this.element.querySelectorAll(selector));\n }\n get controllerSelector() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n }\n get isDocumentScope() {\n return this.element === document.documentElement;\n }\n get documentScope() {\n return this.isDocumentScope\n ? this\n : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n }\n}\n\nclass ScopeObserver {\n constructor(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n start() {\n this.valueListObserver.start();\n }\n stop() {\n this.valueListObserver.stop();\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n parseValueForToken(token) {\n const { element, content: identifier } = token;\n const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n let scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n }\n elementMatchedValue(element, value) {\n const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n }\n elementUnmatchedValue(element, value) {\n const referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n }\n fetchScopesByIdentifierForElement(element) {\n let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n }\n}\n\nclass Router {\n constructor(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n get element() {\n return this.application.element;\n }\n get schema() {\n return this.application.schema;\n }\n get logger() {\n return this.application.logger;\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n get modules() {\n return Array.from(this.modulesByIdentifier.values());\n }\n get contexts() {\n return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n }\n start() {\n this.scopeObserver.start();\n }\n stop() {\n this.scopeObserver.stop();\n }\n loadDefinition(definition) {\n this.unloadIdentifier(definition.identifier);\n const module = new Module(this.application, definition);\n this.connectModule(module);\n const afterLoad = definition.controllerConstructor.afterLoad;\n if (afterLoad) {\n afterLoad(definition.identifier, this.application);\n }\n }\n unloadIdentifier(identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n }\n getContextForElementAndIdentifier(element, identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find((context) => context.element == element);\n }\n }\n handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n scopeConnected(scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n }\n scopeDisconnected(scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }\n connectModule(module) {\n this.modulesByIdentifier.set(module.identifier, module);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.connectContextForScope(scope));\n }\n disconnectModule(module) {\n this.modulesByIdentifier.delete(module.identifier);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.disconnectContextForScope(scope));\n }\n}\n\nconst defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: (identifier) => `data-${identifier}-target`,\n outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n keyMappings: Object.assign(Object.assign({ enter: \"Enter\", tab: \"Tab\", esc: \"Escape\", space: \" \", up: \"ArrowUp\", down: \"ArrowDown\", left: \"ArrowLeft\", right: \"ArrowRight\", home: \"Home\", end: \"End\" }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map((c) => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map((n) => [n, n]))),\n};\nfunction objectFromEntries(array) {\n return array.reduce((memo, [k, v]) => (Object.assign(Object.assign({}, memo), { [k]: v })), {});\n}\n\nclass Application {\n constructor(element = document.documentElement, schema = defaultSchema) {\n this.logger = console;\n this.debug = false;\n this.logDebugActivity = (identifier, functionName, detail = {}) => {\n if (this.debug) {\n this.logFormattedMessage(identifier, functionName, detail);\n }\n };\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n }\n static start(element, schema) {\n const application = new this(element, schema);\n application.start();\n return application;\n }\n async start() {\n await domReady();\n this.logDebugActivity(\"application\", \"starting\");\n this.dispatcher.start();\n this.router.start();\n this.logDebugActivity(\"application\", \"start\");\n }\n stop() {\n this.logDebugActivity(\"application\", \"stopping\");\n this.dispatcher.stop();\n this.router.stop();\n this.logDebugActivity(\"application\", \"stop\");\n }\n register(identifier, controllerConstructor) {\n this.load({ identifier, controllerConstructor });\n }\n registerActionOption(name, filter) {\n this.actionDescriptorFilters[name] = filter;\n }\n load(head, ...rest) {\n const definitions = Array.isArray(head) ? head : [head, ...rest];\n definitions.forEach((definition) => {\n if (definition.controllerConstructor.shouldLoad) {\n this.router.loadDefinition(definition);\n }\n });\n }\n unload(head, ...rest) {\n const identifiers = Array.isArray(head) ? head : [head, ...rest];\n identifiers.forEach((identifier) => this.router.unloadIdentifier(identifier));\n }\n get controllers() {\n return this.router.contexts.map((context) => context.controller);\n }\n getControllerForElementAndIdentifier(element, identifier) {\n const context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }\n handleError(error, message, detail) {\n var _a;\n this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n }\n logFormattedMessage(identifier, functionName, detail = {}) {\n detail = Object.assign({ application: this }, detail);\n this.logger.groupCollapsed(`${identifier} #${functionName}`);\n this.logger.log(\"details:\", Object.assign({}, detail));\n this.logger.groupEnd();\n }\n}\nfunction domReady() {\n return new Promise((resolve) => {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => resolve());\n }\n else {\n resolve();\n }\n });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce((properties, classDefinition) => {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\nfunction propertiesForClassDefinition(key) {\n return {\n [`${key}Class`]: {\n get() {\n const { classes } = this;\n if (classes.has(key)) {\n return classes.get(key);\n }\n else {\n const attribute = classes.getAttributeName(key);\n throw new Error(`Missing attribute \"${attribute}\"`);\n }\n },\n },\n [`${key}Classes`]: {\n get() {\n return this.classes.getAll(key);\n },\n },\n [`has${capitalize(key)}Class`]: {\n get() {\n return this.classes.has(key);\n },\n },\n };\n}\n\nfunction OutletPropertiesBlessing(constructor) {\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n return outlets.reduce((properties, outletDefinition) => {\n return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n }, {});\n}\nfunction propertiesForOutletDefinition(name) {\n const camelizedName = namespaceCamelize(name);\n return {\n [`${camelizedName}Outlet`]: {\n get() {\n const outlet = this.outlets.find(name);\n if (outlet) {\n const outletController = this.application.getControllerForElementAndIdentifier(outlet, name);\n if (outletController) {\n return outletController;\n }\n else {\n throw new Error(`Missing \"data-controller=${name}\" attribute on outlet element for \"${this.identifier}\" controller`);\n }\n }\n throw new Error(`Missing outlet element \"${name}\" for \"${this.identifier}\" controller`);\n },\n },\n [`${camelizedName}Outlets`]: {\n get() {\n const outlets = this.outlets.findAll(name);\n if (outlets.length > 0) {\n return outlets\n .map((outlet) => {\n const controller = this.application.getControllerForElementAndIdentifier(outlet, name);\n if (controller) {\n return controller;\n }\n else {\n console.warn(`The provided outlet element is missing the outlet controller \"${name}\" for \"${this.identifier}\"`, outlet);\n }\n })\n .filter((controller) => controller);\n }\n return [];\n },\n },\n [`${camelizedName}OutletElement`]: {\n get() {\n const outlet = this.outlets.find(name);\n if (outlet) {\n return outlet;\n }\n else {\n throw new Error(`Missing outlet element \"${name}\" for \"${this.identifier}\" controller`);\n }\n },\n },\n [`${camelizedName}OutletElements`]: {\n get() {\n return this.outlets.findAll(name);\n },\n },\n [`has${capitalize(camelizedName)}Outlet`]: {\n get() {\n return this.outlets.has(name);\n },\n },\n };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce((properties, targetDefinition) => {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n return {\n [`${name}Target`]: {\n get() {\n const target = this.targets.find(name);\n if (target) {\n return target;\n }\n else {\n throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n }\n },\n },\n [`${name}Targets`]: {\n get() {\n return this.targets.findAll(name);\n },\n },\n [`has${capitalize(name)}Target`]: {\n get() {\n return this.targets.has(name);\n },\n },\n };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n const propertyDescriptorMap = {\n valueDescriptorMap: {\n get() {\n return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n return Object.assign(result, { [attributeName]: valueDescriptor });\n }, {});\n },\n },\n };\n return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n const { key, name, reader: read, writer: write } = definition;\n return {\n [name]: {\n get() {\n const value = this.data.get(key);\n if (value !== null) {\n return read(value);\n }\n else {\n return definition.defaultValue;\n }\n },\n set(value) {\n if (value === undefined) {\n this.data.delete(key);\n }\n else {\n this.data.set(key, write(value));\n }\n },\n },\n [`has${capitalize(name)}`]: {\n get() {\n return this.data.has(key) || definition.hasCustomDefaultValue;\n },\n },\n };\n}\nfunction parseValueDefinitionPair([token, typeDefinition], controller) {\n return valueDescriptorForTokenAndTypeDefinition({\n controller,\n token,\n typeDefinition,\n });\n}\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array:\n return \"array\";\n case Boolean:\n return \"boolean\";\n case Number:\n return \"number\";\n case Object:\n return \"object\";\n case String:\n return \"string\";\n }\n}\nfunction parseValueTypeDefault(defaultValue) {\n switch (typeof defaultValue) {\n case \"boolean\":\n return \"boolean\";\n case \"number\":\n return \"number\";\n case \"string\":\n return \"string\";\n }\n if (Array.isArray(defaultValue))\n return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n const typeFromObject = parseValueTypeConstant(payload.typeObject.type);\n if (!typeFromObject)\n return;\n const defaultValueType = parseValueTypeDefault(payload.typeObject.default);\n if (typeFromObject !== defaultValueType) {\n const propertyPath = payload.controller ? `${payload.controller}.${payload.token}` : payload.token;\n throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${payload.typeObject.default}\" is of type \"${defaultValueType}\".`);\n }\n return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n const typeFromObject = parseValueTypeObject({\n controller: payload.controller,\n token: payload.token,\n typeObject: payload.typeDefinition,\n });\n const typeFromDefaultValue = parseValueTypeDefault(payload.typeDefinition);\n const typeFromConstant = parseValueTypeConstant(payload.typeDefinition);\n const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type)\n return type;\n const propertyPath = payload.controller ? `${payload.controller}.${payload.typeDefinition}` : payload.token;\n throw new Error(`Unknown value type \"${propertyPath}\" for \"${payload.token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n const constant = parseValueTypeConstant(typeDefinition);\n if (constant)\n return defaultValuesByType[constant];\n const defaultValue = typeDefinition.default;\n if (defaultValue !== undefined)\n return defaultValue;\n return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n const key = `${dasherize(payload.token)}-value`;\n const type = parseValueTypeDefinition(payload);\n return {\n type,\n key,\n name: camelize(key),\n get defaultValue() {\n return defaultValueForDefinition(payload.typeDefinition);\n },\n get hasCustomDefaultValue() {\n return parseValueTypeDefault(payload.typeDefinition) !== undefined;\n },\n reader: readers[type],\n writer: writers[type] || writers.default,\n };\n}\nconst defaultValuesByType = {\n get array() {\n return [];\n },\n boolean: false,\n number: 0,\n get object() {\n return {};\n },\n string: \"\",\n};\nconst readers = {\n array(value) {\n const array = JSON.parse(value);\n if (!Array.isArray(array)) {\n throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n }\n return array;\n },\n boolean(value) {\n return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n },\n number(value) {\n return Number(value);\n },\n object(value) {\n const object = JSON.parse(value);\n if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n }\n return object;\n },\n string(value) {\n return value;\n },\n};\nconst writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON,\n};\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\nfunction writeString(value) {\n return `${value}`;\n}\n\nclass Controller {\n constructor(context) {\n this.context = context;\n }\n static get shouldLoad() {\n return true;\n }\n static afterLoad(_identifier, _application) {\n return;\n }\n get application() {\n return this.context.application;\n }\n get scope() {\n return this.context.scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get targets() {\n return this.scope.targets;\n }\n get outlets() {\n return this.scope.outlets;\n }\n get classes() {\n return this.scope.classes;\n }\n get data() {\n return this.scope.data;\n }\n initialize() {\n }\n connect() {\n }\n disconnect() {\n }\n dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true } = {}) {\n const type = prefix ? `${prefix}:${eventName}` : eventName;\n const event = new CustomEvent(type, { detail, bubbles, cancelable });\n target.dispatchEvent(event);\n return event;\n }\n}\nController.blessings = [\n ClassPropertiesBlessing,\n TargetPropertiesBlessing,\n ValuePropertiesBlessing,\n OutletPropertiesBlessing,\n];\nController.targets = [];\nController.outlets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n","/*!\n * Bootstrap base-component.js v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/event-handler.js'), require('./util/config.js'), require('./util/index.js')) :\n typeof define === 'function' && define.amd ? define(['./dom/data', './dom/event-handler', './util/config', './util/index'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.BaseComponent = factory(global.Data, global.EventHandler, global.Config, global.Index));\n})(this, (function (Data, EventHandler, Config, index_js) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n /**\n * Constants\n */\n\n const VERSION = '5.3.2';\n\n /**\n * Class definition\n */\n\n class BaseComponent extends Config {\n constructor(element, config) {\n super();\n element = index_js.getElement(element);\n if (!element) {\n return;\n }\n this._element = element;\n this._config = this._getConfig(config);\n Data.set(this._element, this.constructor.DATA_KEY, this);\n }\n\n // Public\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY);\n EventHandler.off(this._element, this.constructor.EVENT_KEY);\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null;\n }\n }\n _queueCallback(callback, element, isAnimated = true) {\n index_js.executeAfterTransition(callback, element, isAnimated);\n }\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n\n // Static\n static getInstance(element) {\n return Data.get(index_js.getElement(element), this.DATA_KEY);\n }\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);\n }\n static get VERSION() {\n return VERSION;\n }\n static get DATA_KEY() {\n return `bs.${this.NAME}`;\n }\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`;\n }\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`;\n }\n }\n\n return BaseComponent;\n\n}));\n//# sourceMappingURL=base-component.js.map\n","/*!\n * Bootstrap carousel.js v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./base-component.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./dom/selector-engine.js'), require('./util/index.js'), require('./util/swipe.js')) :\n typeof define === 'function' && define.amd ? define(['./base-component', './dom/event-handler', './dom/manipulator', './dom/selector-engine', './util/index', './util/swipe'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Carousel = factory(global.BaseComponent, global.EventHandler, global.Manipulator, global.SelectorEngine, global.Index, global.Swipe));\n})(this, (function (BaseComponent, EventHandler, Manipulator, SelectorEngine, index_js, Swipe) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n /**\n * Constants\n */\n\n const NAME = 'carousel';\n const DATA_KEY = 'bs.carousel';\n const EVENT_KEY = `.${DATA_KEY}`;\n const DATA_API_KEY = '.data-api';\n const ARROW_LEFT_KEY = 'ArrowLeft';\n const ARROW_RIGHT_KEY = 'ArrowRight';\n const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n const ORDER_NEXT = 'next';\n const ORDER_PREV = 'prev';\n const DIRECTION_LEFT = 'left';\n const DIRECTION_RIGHT = 'right';\n const EVENT_SLIDE = `slide${EVENT_KEY}`;\n const EVENT_SLID = `slid${EVENT_KEY}`;\n const EVENT_KEYDOWN = `keydown${EVENT_KEY}`;\n const EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`;\n const EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`;\n const EVENT_DRAG_START = `dragstart${EVENT_KEY}`;\n const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`;\n const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;\n const CLASS_NAME_CAROUSEL = 'carousel';\n const CLASS_NAME_ACTIVE = 'active';\n const CLASS_NAME_SLIDE = 'slide';\n const CLASS_NAME_END = 'carousel-item-end';\n const CLASS_NAME_START = 'carousel-item-start';\n const CLASS_NAME_NEXT = 'carousel-item-next';\n const CLASS_NAME_PREV = 'carousel-item-prev';\n const SELECTOR_ACTIVE = '.active';\n const SELECTOR_ITEM = '.carousel-item';\n const SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;\n const SELECTOR_ITEM_IMG = '.carousel-item img';\n const SELECTOR_INDICATORS = '.carousel-indicators';\n const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';\n const SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]';\n const KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n };\n const Default = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true\n };\n const DefaultType = {\n interval: '(number|boolean)',\n // TODO:v6 remove boolean support\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean'\n };\n\n /**\n * Class definition\n */\n\n class Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._interval = null;\n this._activeElement = null;\n this._isSliding = false;\n this.touchTimeout = null;\n this._swipeHelper = null;\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);\n this._addEventListeners();\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle();\n }\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n static get DefaultType() {\n return DefaultType;\n }\n static get NAME() {\n return NAME;\n }\n\n // Public\n next() {\n this._slide(ORDER_NEXT);\n }\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && index_js.isVisible(this._element)) {\n this.next();\n }\n }\n prev() {\n this._slide(ORDER_PREV);\n }\n pause() {\n if (this._isSliding) {\n index_js.triggerTransitionEnd(this._element);\n }\n this._clearInterval();\n }\n cycle() {\n this._clearInterval();\n this._updateInterval();\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);\n }\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return;\n }\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle());\n return;\n }\n this.cycle();\n }\n to(index) {\n const items = this._getItems();\n if (index > items.length - 1 || index < 0) {\n return;\n }\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index));\n return;\n }\n const activeIndex = this._getItemIndex(this._getActive());\n if (activeIndex === index) {\n return;\n }\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;\n this._slide(order, items[index]);\n }\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose();\n }\n super.dispose();\n }\n\n // Private\n _configAfterMerge(config) {\n config.defaultInterval = config.interval;\n return config;\n }\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));\n }\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause());\n EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle());\n }\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners();\n }\n }\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault());\n }\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return;\n }\n\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause();\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout);\n }\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);\n };\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack\n };\n this._swipeHelper = new Swipe(this._element, swipeConfig);\n }\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n const direction = KEY_TO_DIRECTION[event.key];\n if (direction) {\n event.preventDefault();\n this._slide(this._directionToOrder(direction));\n }\n }\n _getItemIndex(element) {\n return this._getItems().indexOf(element);\n }\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return;\n }\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE);\n activeIndicator.removeAttribute('aria-current');\n const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement);\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE);\n newActiveIndicator.setAttribute('aria-current', 'true');\n }\n }\n _updateInterval() {\n const element = this._activeElement || this._getActive();\n if (!element) {\n return;\n }\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);\n this._config.interval = elementInterval || this._config.defaultInterval;\n }\n _slide(order, element = null) {\n if (this._isSliding) {\n return;\n }\n const activeElement = this._getActive();\n const isNext = order === ORDER_NEXT;\n const nextElement = element || index_js.getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);\n if (nextElement === activeElement) {\n return;\n }\n const nextElementIndex = this._getItemIndex(nextElement);\n const triggerEvent = eventName => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex\n });\n };\n const slideEvent = triggerEvent(EVENT_SLIDE);\n if (slideEvent.defaultPrevented) {\n return;\n }\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // TODO: change tests that use empty divs to avoid this check\n return;\n }\n const isCycling = Boolean(this._interval);\n this.pause();\n this._isSliding = true;\n this._setActiveIndicatorElement(nextElementIndex);\n this._activeElement = nextElement;\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;\n nextElement.classList.add(orderClassName);\n index_js.reflow(nextElement);\n activeElement.classList.add(directionalClassName);\n nextElement.classList.add(directionalClassName);\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName);\n nextElement.classList.add(CLASS_NAME_ACTIVE);\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName);\n this._isSliding = false;\n triggerEvent(EVENT_SLID);\n };\n this._queueCallback(completeCallBack, activeElement, this._isAnimated());\n if (isCycling) {\n this.cycle();\n }\n }\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE);\n }\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n }\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element);\n }\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n }\n _directionToOrder(direction) {\n if (index_js.isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;\n }\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;\n }\n _orderToDirection(order) {\n if (index_js.isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Carousel.getOrCreateInstance(this, config);\n if (typeof config === 'number') {\n data.to(config);\n return;\n }\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n }\n });\n }\n }\n\n /**\n * Data API implementation\n */\n\n EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return;\n }\n event.preventDefault();\n const carousel = Carousel.getOrCreateInstance(target);\n const slideIndex = this.getAttribute('data-bs-slide-to');\n if (slideIndex) {\n carousel.to(slideIndex);\n carousel._maybeEnableCycle();\n return;\n }\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next();\n carousel._maybeEnableCycle();\n return;\n }\n carousel.prev();\n carousel._maybeEnableCycle();\n });\n EventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);\n for (const carousel of carousels) {\n Carousel.getOrCreateInstance(carousel);\n }\n });\n\n /**\n * jQuery\n */\n\n index_js.defineJQueryPlugin(Carousel);\n\n return Carousel;\n\n}));\n//# sourceMappingURL=carousel.js.map\n","/*!\n * Bootstrap collapse.js v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./base-component.js'), require('./dom/event-handler.js'), require('./dom/selector-engine.js'), require('./util/index.js')) :\n typeof define === 'function' && define.amd ? define(['./base-component', './dom/event-handler', './dom/selector-engine', './util/index'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Collapse = factory(global.BaseComponent, global.EventHandler, global.SelectorEngine, global.Index));\n})(this, (function (BaseComponent, EventHandler, SelectorEngine, index_js) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n /**\n * Constants\n */\n\n const NAME = 'collapse';\n const DATA_KEY = 'bs.collapse';\n const EVENT_KEY = `.${DATA_KEY}`;\n const DATA_API_KEY = '.data-api';\n const EVENT_SHOW = `show${EVENT_KEY}`;\n const EVENT_SHOWN = `shown${EVENT_KEY}`;\n const EVENT_HIDE = `hide${EVENT_KEY}`;\n const EVENT_HIDDEN = `hidden${EVENT_KEY}`;\n const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;\n const CLASS_NAME_SHOW = 'show';\n const CLASS_NAME_COLLAPSE = 'collapse';\n const CLASS_NAME_COLLAPSING = 'collapsing';\n const CLASS_NAME_COLLAPSED = 'collapsed';\n const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\n const CLASS_NAME_HORIZONTAL = 'collapse-horizontal';\n const WIDTH = 'width';\n const HEIGHT = 'height';\n const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\n const SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]';\n const Default = {\n parent: null,\n toggle: true\n };\n const DefaultType = {\n parent: '(null|element)',\n toggle: 'boolean'\n };\n\n /**\n * Class definition\n */\n\n class Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isTransitioning = false;\n this._triggerArray = [];\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE);\n for (const elem of toggleList) {\n const selector = SelectorEngine.getSelectorFromElement(elem);\n const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element);\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem);\n }\n }\n this._initializeChildren();\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\n }\n if (this._config.toggle) {\n this.toggle();\n }\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n static get DefaultType() {\n return DefaultType;\n }\n static get NAME() {\n return NAME;\n }\n\n // Public\n toggle() {\n if (this._isShown()) {\n this.hide();\n } else {\n this.show();\n }\n }\n show() {\n if (this._isTransitioning || this._isShown()) {\n return;\n }\n let activeChildren = [];\n\n // find active children\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {\n toggle: false\n }));\n }\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return;\n }\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW);\n if (startEvent.defaultPrevented) {\n return;\n }\n for (const activeInstance of activeChildren) {\n activeInstance.hide();\n }\n const dimension = this._getDimension();\n this._element.classList.remove(CLASS_NAME_COLLAPSE);\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n this._element.style[dimension] = 0;\n this._addAriaAndCollapsedClass(this._triggerArray, true);\n this._isTransitioning = true;\n const complete = () => {\n this._isTransitioning = false;\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);\n this._element.style[dimension] = '';\n EventHandler.trigger(this._element, EVENT_SHOWN);\n };\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n const scrollSize = `scroll${capitalizedDimension}`;\n this._queueCallback(complete, this._element, true);\n this._element.style[dimension] = `${this._element[scrollSize]}px`;\n }\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return;\n }\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE);\n if (startEvent.defaultPrevented) {\n return;\n }\n const dimension = this._getDimension();\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;\n index_js.reflow(this._element);\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);\n for (const trigger of this._triggerArray) {\n const element = SelectorEngine.getElementFromSelector(trigger);\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false);\n }\n }\n this._isTransitioning = true;\n const complete = () => {\n this._isTransitioning = false;\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n this._element.classList.add(CLASS_NAME_COLLAPSE);\n EventHandler.trigger(this._element, EVENT_HIDDEN);\n };\n this._element.style[dimension] = '';\n this._queueCallback(complete, this._element, true);\n }\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW);\n }\n\n // Private\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle); // Coerce string values\n config.parent = index_js.getElement(config.parent);\n return config;\n }\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;\n }\n _initializeChildren() {\n if (!this._config.parent) {\n return;\n }\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE);\n for (const element of children) {\n const selected = SelectorEngine.getElementFromSelector(element);\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected));\n }\n }\n }\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);\n // remove children if greater depth\n return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element));\n }\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return;\n }\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);\n element.setAttribute('aria-expanded', isOpen);\n }\n }\n\n // Static\n static jQueryInterface(config) {\n const _config = {};\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n return this.each(function () {\n const data = Collapse.getOrCreateInstance(this, _config);\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n }\n });\n }\n }\n\n /**\n * Data API implementation\n */\n\n EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {\n event.preventDefault();\n }\n for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n Collapse.getOrCreateInstance(element, {\n toggle: false\n }).toggle();\n }\n });\n\n /**\n * jQuery\n */\n\n index_js.defineJQueryPlugin(Collapse);\n\n return Collapse;\n\n}));\n//# sourceMappingURL=collapse.js.map\n","/*!\n * Bootstrap data.js v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Data = factory());\n})(this, (function () { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n /**\n * Constants\n */\n\n const elementMap = new Map();\n const data = {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map());\n }\n const instanceMap = elementMap.get(element);\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);\n return;\n }\n instanceMap.set(key, instance);\n },\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null;\n }\n return null;\n },\n remove(element, key) {\n if (!elementMap.has(element)) {\n return;\n }\n const instanceMap = elementMap.get(element);\n instanceMap.delete(key);\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element);\n }\n }\n };\n\n return data;\n\n}));\n//# sourceMappingURL=data.js.map\n","/*!\n * Bootstrap event-handler.js v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('../util/index.js')) :\n typeof define === 'function' && define.amd ? define(['../util/index'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.EventHandler = factory(global.Index));\n})(this, (function (index_js) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n /**\n * Constants\n */\n\n const namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\n const stripNameRegex = /\\..*/;\n const stripUidRegex = /::\\d+$/;\n const eventRegistry = {}; // Events storage\n let uidEvent = 1;\n const customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n };\n const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);\n\n /**\n * Private methods\n */\n\n function makeEventUid(element, uid) {\n return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;\n }\n function getElementEvents(element) {\n const uid = makeEventUid(element);\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n return eventRegistry[uid];\n }\n function bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, {\n delegateTarget: element\n });\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn);\n }\n return fn.apply(element, [event]);\n };\n }\n function bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n for (let {\n target\n } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue;\n }\n hydrateObj(event, {\n delegateTarget: target\n });\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn);\n }\n return fn.apply(target, [event]);\n }\n }\n };\n }\n function findHandler(events, callable, delegationSelector = null) {\n return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector);\n }\n function normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string';\n // TODO: tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n let typeEvent = getTypeEvent(originalTypeEvent);\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent;\n }\n return [isDelegated, callable, typeEvent];\n }\n function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {\n return fn.call(this, event);\n }\n };\n };\n callable = wrapFunction(callable);\n }\n const events = getElementEvents(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n return;\n }\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));\n const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n element.addEventListener(typeEvent, fn, isDelegated);\n }\n function removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n if (!fn) {\n return;\n }\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n }\n function removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n }\n function getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '');\n return customEvents[event] || event;\n }\n const EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false);\n },\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true);\n },\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n const inNamespace = typeEvent !== originalTypeEvent;\n const events = getElementEvents(element);\n const storeElementEvent = events[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith('.');\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n }\n }\n for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n },\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n const $ = index_js.getjQuery();\n const typeEvent = getTypeEvent(event);\n const inNamespace = event !== typeEvent;\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args);\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n const evt = hydrateObj(new Event(event, {\n bubbles,\n cancelable: true\n }), args);\n if (defaultPrevented) {\n evt.preventDefault();\n }\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n return evt;\n }\n };\n function hydrateObj(obj, meta = {}) {\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value;\n } catch (_unused) {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value;\n }\n });\n }\n }\n return obj;\n }\n\n return EventHandler;\n\n}));\n//# sourceMappingURL=event-handler.js.map\n","/*!\n * Bootstrap manipulator.js v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Manipulator = factory());\n})(this, (function () { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n function normalizeData(value) {\n if (value === 'true') {\n return true;\n }\n if (value === 'false') {\n return false;\n }\n if (value === Number(value).toString()) {\n return Number(value);\n }\n if (value === '' || value === 'null') {\n return null;\n }\n if (typeof value !== 'string') {\n return value;\n }\n try {\n return JSON.parse(decodeURIComponent(value));\n } catch (_unused) {\n return value;\n }\n }\n function normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);\n }\n const Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);\n },\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);\n },\n getDataAttributes(element) {\n if (!element) {\n return {};\n }\n const attributes = {};\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'));\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '');\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);\n attributes[pureKey] = normalizeData(element.dataset[key]);\n }\n return attributes;\n },\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));\n }\n };\n\n return Manipulator;\n\n}));\n//# sourceMappingURL=manipulator.js.map\n","/*!\n * Bootstrap selector-engine.js v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('../util/index.js')) :\n typeof define === 'function' && define.amd ? define(['../util/index'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.SelectorEngine = factory(global.Index));\n})(this, (function (index_js) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n const getSelector = element => {\n let selector = element.getAttribute('data-bs-target');\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href');\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) {\n return null;\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`;\n }\n selector = hrefAttribute && hrefAttribute !== '#' ? index_js.parseSelector(hrefAttribute.trim()) : null;\n }\n return selector;\n };\n const SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector));\n },\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector);\n },\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector));\n },\n parents(element, selector) {\n const parents = [];\n let ancestor = element.parentNode.closest(selector);\n while (ancestor) {\n parents.push(ancestor);\n ancestor = ancestor.parentNode.closest(selector);\n }\n return parents;\n },\n prev(element, selector) {\n let previous = element.previousElementSibling;\n while (previous) {\n if (previous.matches(selector)) {\n return [previous];\n }\n previous = previous.previousElementSibling;\n }\n return [];\n },\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling;\n while (next) {\n if (next.matches(selector)) {\n return [next];\n }\n next = next.nextElementSibling;\n }\n return [];\n },\n focusableChildren(element) {\n const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable=\"true\"]'].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',');\n return this.find(focusables, element).filter(el => !index_js.isDisabled(el) && index_js.isVisible(el));\n },\n getSelectorFromElement(element) {\n const selector = getSelector(element);\n if (selector) {\n return SelectorEngine.findOne(selector) ? selector : null;\n }\n return null;\n },\n getElementFromSelector(element) {\n const selector = getSelector(element);\n return selector ? SelectorEngine.findOne(selector) : null;\n },\n getMultipleElementsFromSelector(element) {\n const selector = getSelector(element);\n return selector ? SelectorEngine.find(selector) : [];\n }\n };\n\n return SelectorEngine;\n\n}));\n//# sourceMappingURL=selector-engine.js.map\n","/*!\n * Bootstrap config.js v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('../dom/manipulator.js'), require('./index.js')) :\n typeof define === 'function' && define.amd ? define(['../dom/manipulator', './index'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Config = factory(global.Manipulator, global.Index));\n})(this, (function (Manipulator, index_js) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n /**\n * Class definition\n */\n\n class Config {\n // Getters\n static get Default() {\n return {};\n }\n static get DefaultType() {\n return {};\n }\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!');\n }\n _getConfig(config) {\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n _configAfterMerge(config) {\n return config;\n }\n _mergeConfigObj(config, element) {\n const jsonConfig = index_js.isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse\n\n return {\n ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(index_js.isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n };\n }\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const [property, expectedTypes] of Object.entries(configTypes)) {\n const value = config[property];\n const valueType = index_js.isElement(value) ? 'element' : index_js.toType(value);\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`);\n }\n }\n }\n }\n\n return Config;\n\n}));\n//# sourceMappingURL=config.js.map\n","/*!\n * Bootstrap index.js v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Index = {}));\n})(this, (function (exports) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n const MAX_UID = 1000000;\n const MILLISECONDS_MULTIPLIER = 1000;\n const TRANSITION_END = 'transitionend';\n\n /**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\n const parseSelector = selector => {\n if (selector && window.CSS && window.CSS.escape) {\n // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`);\n }\n return selector;\n };\n\n // Shout-out Angus Croll (https://goo.gl/pxwQGp)\n const toType = object => {\n if (object === null || object === undefined) {\n return `${object}`;\n }\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase();\n };\n\n /**\n * Public Util API\n */\n\n const getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID);\n } while (document.getElementById(prefix));\n return prefix;\n };\n const getTransitionDurationFromElement = element => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let {\n transitionDuration,\n transitionDelay\n } = window.getComputedStyle(element);\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n };\n const triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END));\n };\n const isElement = object => {\n if (!object || typeof object !== 'object') {\n return false;\n }\n if (typeof object.jquery !== 'undefined') {\n object = object[0];\n }\n return typeof object.nodeType !== 'undefined';\n };\n const getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object;\n }\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(parseSelector(object));\n }\n return null;\n };\n const isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false;\n }\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible';\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest('details:not([open])');\n if (!closedDetails) {\n return elementIsVisible;\n }\n if (closedDetails !== element) {\n const summary = element.closest('summary');\n if (summary && summary.parentNode !== closedDetails) {\n return false;\n }\n if (summary === null) {\n return false;\n }\n }\n return elementIsVisible;\n };\n const isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true;\n }\n if (element.classList.contains('disabled')) {\n return true;\n }\n if (typeof element.disabled !== 'undefined') {\n return element.disabled;\n }\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';\n };\n const findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null;\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n if (element instanceof ShadowRoot) {\n return element;\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null;\n }\n return findShadowRoot(element.parentNode);\n };\n const noop = () => {};\n\n /**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\n const reflow = element => {\n element.offsetHeight; // eslint-disable-line no-unused-expressions\n };\n\n const getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery;\n }\n return null;\n };\n const DOMContentLoadedCallbacks = [];\n const onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback();\n }\n });\n }\n DOMContentLoadedCallbacks.push(callback);\n } else {\n callback();\n }\n };\n const isRTL = () => document.documentElement.dir === 'rtl';\n const defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery();\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME;\n const JQUERY_NO_CONFLICT = $.fn[name];\n $.fn[name] = plugin.jQueryInterface;\n $.fn[name].Constructor = plugin;\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT;\n return plugin.jQueryInterface;\n };\n }\n });\n };\n const execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue;\n };\n const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback);\n return;\n }\n const durationPadding = 5;\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n let called = false;\n const handler = ({\n target\n }) => {\n if (target !== transitionElement) {\n return;\n }\n called = true;\n transitionElement.removeEventListener(TRANSITION_END, handler);\n execute(callback);\n };\n transitionElement.addEventListener(TRANSITION_END, handler);\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement);\n }\n }, emulatedDuration);\n };\n\n /**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\n const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length;\n let index = list.indexOf(activeElement);\n\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];\n }\n index += shouldGetNext ? 1 : -1;\n if (isCycleAllowed) {\n index = (index + listLength) % listLength;\n }\n return list[Math.max(0, Math.min(index, listLength - 1))];\n };\n\n exports.defineJQueryPlugin = defineJQueryPlugin;\n exports.execute = execute;\n exports.executeAfterTransition = executeAfterTransition;\n exports.findShadowRoot = findShadowRoot;\n exports.getElement = getElement;\n exports.getNextActiveElement = getNextActiveElement;\n exports.getTransitionDurationFromElement = getTransitionDurationFromElement;\n exports.getUID = getUID;\n exports.getjQuery = getjQuery;\n exports.isDisabled = isDisabled;\n exports.isElement = isElement;\n exports.isRTL = isRTL;\n exports.isVisible = isVisible;\n exports.noop = noop;\n exports.onDOMContentLoaded = onDOMContentLoaded;\n exports.parseSelector = parseSelector;\n exports.reflow = reflow;\n exports.toType = toType;\n exports.triggerTransitionEnd = triggerTransitionEnd;\n\n Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\n}));\n//# sourceMappingURL=index.js.map\n","/*!\n * Bootstrap swipe.js v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('../dom/event-handler.js'), require('./config.js'), require('./index.js')) :\n typeof define === 'function' && define.amd ? define(['../dom/event-handler', './config', './index'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Swipe = factory(global.EventHandler, global.Config, global.Index));\n})(this, (function (EventHandler, Config, index_js) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n /**\n * Constants\n */\n\n const NAME = 'swipe';\n const EVENT_KEY = '.bs.swipe';\n const EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`;\n const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`;\n const EVENT_TOUCHEND = `touchend${EVENT_KEY}`;\n const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`;\n const EVENT_POINTERUP = `pointerup${EVENT_KEY}`;\n const POINTER_TYPE_TOUCH = 'touch';\n const POINTER_TYPE_PEN = 'pen';\n const CLASS_NAME_POINTER_EVENT = 'pointer-event';\n const SWIPE_THRESHOLD = 40;\n const Default = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n };\n const DefaultType = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n };\n\n /**\n * Class definition\n */\n\n class Swipe extends Config {\n constructor(element, config) {\n super();\n this._element = element;\n if (!element || !Swipe.isSupported()) {\n return;\n }\n this._config = this._getConfig(config);\n this._deltaX = 0;\n this._supportPointerEvents = Boolean(window.PointerEvent);\n this._initEvents();\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n static get DefaultType() {\n return DefaultType;\n }\n static get NAME() {\n return NAME;\n }\n\n // Public\n dispose() {\n EventHandler.off(this._element, EVENT_KEY);\n }\n\n // Private\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX;\n return;\n }\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX;\n }\n }\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX;\n }\n this._handleSwipe();\n index_js.execute(this._config.endCallback);\n }\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;\n }\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX);\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return;\n }\n const direction = absDeltaX / this._deltaX;\n this._deltaX = 0;\n if (!direction) {\n return;\n }\n index_js.execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);\n }\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event));\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event));\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event));\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event));\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event));\n }\n }\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);\n }\n\n // Static\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n }\n }\n\n return Swipe;\n\n}));\n//# sourceMappingURL=swipe.js.map\n","// UMD insanity\n// This code sets up support for (in order) AMD, ES6 modules, and globals.\n(function (root, factory) {\n //@ts-ignore\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n //@ts-ignore\n define([], factory);\n } else if (typeof module === 'object' && module.exports) {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory();\n } else {\n // Browser globals\n root.htmx = root.htmx || factory();\n }\n}(typeof self !== 'undefined' ? self : this, function () {\nreturn (function () {\n 'use strict';\n\n // Public API\n //** @type {import(\"./htmx\").HtmxApi} */\n // TODO: list all methods in public API\n var htmx = {\n onLoad: onLoadHelper,\n process: processNode,\n on: addEventListenerImpl,\n off: removeEventListenerImpl,\n trigger : triggerEvent,\n ajax : ajaxHelper,\n find : find,\n findAll : findAll,\n closest : closest,\n values : function(elt, type){\n var inputValues = getInputValues(elt, type || \"post\");\n return inputValues.values;\n },\n remove : removeElement,\n addClass : addClassToElement,\n removeClass : removeClassFromElement,\n toggleClass : toggleClassOnElement,\n takeClass : takeClassForElement,\n defineExtension : defineExtension,\n removeExtension : removeExtension,\n logAll : logAll,\n logNone : logNone,\n logger : null,\n config : {\n historyEnabled:true,\n historyCacheSize:10,\n refreshOnHistoryMiss:false,\n defaultSwapStyle:'innerHTML',\n defaultSwapDelay:0,\n defaultSettleDelay:20,\n includeIndicatorStyles:true,\n indicatorClass:'htmx-indicator',\n requestClass:'htmx-request',\n addedClass:'htmx-added',\n settlingClass:'htmx-settling',\n swappingClass:'htmx-swapping',\n allowEval:true,\n allowScriptTags:true,\n inlineScriptNonce:'',\n attributesToSettle:[\"class\", \"style\", \"width\", \"height\"],\n withCredentials:false,\n timeout:0,\n wsReconnectDelay: 'full-jitter',\n wsBinaryType: 'blob',\n disableSelector: \"[hx-disable], [data-hx-disable]\",\n useTemplateFragments: false,\n scrollBehavior: 'smooth',\n defaultFocusScroll: false,\n getCacheBusterParam: false,\n globalViewTransitions: false,\n methodsThatUseUrlParams: [\"get\"],\n selfRequestsOnly: false,\n ignoreTitle: false,\n scrollIntoViewOnBoost: true,\n triggerSpecsCache: null,\n },\n parseInterval:parseInterval,\n _:internalEval,\n createEventSource: function(url){\n return new EventSource(url, {withCredentials:true})\n },\n createWebSocket: function(url){\n var sock = new WebSocket(url, []);\n sock.binaryType = htmx.config.wsBinaryType;\n return sock;\n },\n version: \"1.9.10\"\n };\n\n /** @type {import(\"./htmx\").HtmxInternalApi} */\n var internalAPI = {\n addTriggerHandler: addTriggerHandler,\n bodyContains: bodyContains,\n canAccessLocalStorage: canAccessLocalStorage,\n findThisElement: findThisElement,\n filterValues: filterValues,\n hasAttribute: hasAttribute,\n getAttributeValue: getAttributeValue,\n getClosestAttributeValue: getClosestAttributeValue,\n getClosestMatch: getClosestMatch,\n getExpressionVars: getExpressionVars,\n getHeaders: getHeaders,\n getInputValues: getInputValues,\n getInternalData: getInternalData,\n getSwapSpecification: getSwapSpecification,\n getTriggerSpecs: getTriggerSpecs,\n getTarget: getTarget,\n makeFragment: makeFragment,\n mergeObjects: mergeObjects,\n makeSettleInfo: makeSettleInfo,\n oobSwap: oobSwap,\n querySelectorExt: querySelectorExt,\n selectAndSwap: selectAndSwap,\n settleImmediately: settleImmediately,\n shouldCancel: shouldCancel,\n triggerEvent: triggerEvent,\n triggerErrorEvent: triggerErrorEvent,\n withExtensions: withExtensions,\n }\n\n var VERBS = ['get', 'post', 'put', 'delete', 'patch'];\n var VERB_SELECTOR = VERBS.map(function(verb){\n return \"[hx-\" + verb + \"], [data-hx-\" + verb + \"]\"\n }).join(\", \");\n\n var HEAD_TAG_REGEX = makeTagRegEx('head'),\n TITLE_TAG_REGEX = makeTagRegEx('title'),\n SVG_TAGS_REGEX = makeTagRegEx('svg', true);\n\n //====================================================================\n // Utilities\n //====================================================================\n\n /**\n * @param {string} tag\n * @param {boolean} global\n * @returns {RegExp}\n */\n function makeTagRegEx(tag, global = false) {\n return new RegExp(`<${tag}(\\\\s[^>]*>|>)([\\\\s\\\\S]*?)<\\\\/${tag}>`,\n global ? 'gim' : 'im');\n }\n\n function parseInterval(str) {\n if (str == undefined) {\n return undefined;\n }\n\n let interval = NaN;\n if (str.slice(-2) == \"ms\") {\n interval = parseFloat(str.slice(0, -2));\n } else if (str.slice(-1) == \"s\") {\n interval = parseFloat(str.slice(0, -1)) * 1000;\n } else if (str.slice(-1) == \"m\") {\n interval = parseFloat(str.slice(0, -1)) * 1000 * 60;\n } else {\n interval = parseFloat(str);\n }\n return isNaN(interval) ? undefined : interval;\n }\n\n /**\n * @param {HTMLElement} elt\n * @param {string} name\n * @returns {(string | null)}\n */\n function getRawAttribute(elt, name) {\n return elt.getAttribute && elt.getAttribute(name);\n }\n\n // resolve with both hx and data-hx prefixes\n function hasAttribute(elt, qualifiedName) {\n return elt.hasAttribute && (elt.hasAttribute(qualifiedName) ||\n elt.hasAttribute(\"data-\" + qualifiedName));\n }\n\n /**\n *\n * @param {HTMLElement} elt\n * @param {string} qualifiedName\n * @returns {(string | null)}\n */\n function getAttributeValue(elt, qualifiedName) {\n return getRawAttribute(elt, qualifiedName) || getRawAttribute(elt, \"data-\" + qualifiedName);\n }\n\n /**\n * @param {HTMLElement} elt\n * @returns {HTMLElement | null}\n */\n function parentElt(elt) {\n return elt.parentElement;\n }\n\n /**\n * @returns {Document}\n */\n function getDocument() {\n return document;\n }\n\n /**\n * @param {HTMLElement} elt\n * @param {(e:HTMLElement) => boolean} condition\n * @returns {HTMLElement | null}\n */\n function getClosestMatch(elt, condition) {\n while (elt && !condition(elt)) {\n elt = parentElt(elt);\n }\n\n return elt ? elt : null;\n }\n\n function getAttributeValueWithDisinheritance(initialElement, ancestor, attributeName){\n var attributeValue = getAttributeValue(ancestor, attributeName);\n var disinherit = getAttributeValue(ancestor, \"hx-disinherit\");\n if (initialElement !== ancestor && disinherit && (disinherit === \"*\" || disinherit.split(\" \").indexOf(attributeName) >= 0)) {\n return \"unset\";\n } else {\n return attributeValue\n }\n }\n\n /**\n * @param {HTMLElement} elt\n * @param {string} attributeName\n * @returns {string | null}\n */\n function getClosestAttributeValue(elt, attributeName) {\n var closestAttr = null;\n getClosestMatch(elt, function (e) {\n return closestAttr = getAttributeValueWithDisinheritance(elt, e, attributeName);\n });\n if (closestAttr !== \"unset\") {\n return closestAttr;\n }\n }\n\n /**\n * @param {HTMLElement} elt\n * @param {string} selector\n * @returns {boolean}\n */\n function matches(elt, selector) {\n // @ts-ignore: non-standard properties for browser compatibility\n // noinspection JSUnresolvedVariable\n var matchesFunction = elt.matches || elt.matchesSelector || elt.msMatchesSelector || elt.mozMatchesSelector || elt.webkitMatchesSelector || elt.oMatchesSelector;\n return matchesFunction && matchesFunction.call(elt, selector);\n }\n\n /**\n * @param {string} str\n * @returns {string}\n */\n function getStartTag(str) {\n var tagMatcher = /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i\n var match = tagMatcher.exec( str );\n if (match) {\n return match[1].toLowerCase();\n } else {\n return \"\";\n }\n }\n\n /**\n *\n * @param {string} resp\n * @param {number} depth\n * @returns {Element}\n */\n function parseHTML(resp, depth) {\n var parser = new DOMParser();\n var responseDoc = parser.parseFromString(resp, \"text/html\");\n\n /** @type {Element} */\n var responseNode = responseDoc.body;\n while (depth > 0) {\n depth--;\n // @ts-ignore\n responseNode = responseNode.firstChild;\n }\n if (responseNode == null) {\n // @ts-ignore\n responseNode = getDocument().createDocumentFragment();\n }\n return responseNode;\n }\n\n function aFullPageResponse(resp) {\n return /\", 0);\n // @ts-ignore type mismatch between DocumentFragment and Element.\n // TODO: Are these close enough for htmx to use interchangeably?\n return documentFragment.querySelector('template').content;\n }\n switch (startTag) {\n case \"thead\":\n case \"tbody\":\n case \"tfoot\":\n case \"colgroup\":\n case \"caption\":\n return parseHTML(\"\" + content + \"
\", 1);\n case \"col\":\n return parseHTML(\"\" + content + \"
\", 2);\n case \"tr\":\n return parseHTML(\"\" + content + \"
\", 2);\n case \"td\":\n case \"th\":\n return parseHTML(\"\" + content + \"
\", 3);\n case \"script\":\n case \"style\":\n return parseHTML(\"
\" + content + \"
\", 1);\n default:\n return parseHTML(content, 0);\n }\n }\n\n /**\n * @param {Function} func\n */\n function maybeCall(func){\n if(func) {\n func();\n }\n }\n\n /**\n * @param {any} o\n * @param {string} type\n * @returns\n */\n function isType(o, type) {\n return Object.prototype.toString.call(o) === \"[object \" + type + \"]\";\n }\n\n /**\n * @param {*} o\n * @returns {o is Function}\n */\n function isFunction(o) {\n return isType(o, \"Function\");\n }\n\n /**\n * @param {*} o\n * @returns {o is Object}\n */\n function isRawObject(o) {\n return isType(o, \"Object\");\n }\n\n /**\n * getInternalData retrieves \"private\" data stored by htmx within an element\n * @param {HTMLElement} elt\n * @returns {*}\n */\n function getInternalData(elt) {\n var dataProp = 'htmx-internal-data';\n var data = elt[dataProp];\n if (!data) {\n data = elt[dataProp] = {};\n }\n return data;\n }\n\n /**\n * toArray converts an ArrayLike object into a real array.\n * @param {ArrayLike} arr\n * @returns {any[]}\n */\n function toArray(arr) {\n var returnArr = [];\n if (arr) {\n for (var i = 0; i < arr.length; i++) {\n returnArr.push(arr[i]);\n }\n }\n return returnArr\n }\n\n function forEach(arr, func) {\n if (arr) {\n for (var i = 0; i < arr.length; i++) {\n func(arr[i]);\n }\n }\n }\n\n function isScrolledIntoView(el) {\n var rect = el.getBoundingClientRect();\n var elemTop = rect.top;\n var elemBottom = rect.bottom;\n return elemTop < window.innerHeight && elemBottom >= 0;\n }\n\n function bodyContains(elt) {\n // IE Fix\n if (elt.getRootNode && elt.getRootNode() instanceof window.ShadowRoot) {\n return getDocument().body.contains(elt.getRootNode().host);\n } else {\n return getDocument().body.contains(elt);\n }\n }\n\n function splitOnWhitespace(trigger) {\n return trigger.trim().split(/\\s+/);\n }\n\n /**\n * mergeObjects takes all of the keys from\n * obj2 and duplicates them into obj1\n * @param {Object} obj1\n * @param {Object} obj2\n * @returns {Object}\n */\n function mergeObjects(obj1, obj2) {\n for (var key in obj2) {\n if (obj2.hasOwnProperty(key)) {\n obj1[key] = obj2[key];\n }\n }\n return obj1;\n }\n\n function parseJSON(jString) {\n try {\n return JSON.parse(jString);\n } catch(error) {\n logError(error);\n return null;\n }\n }\n\n function canAccessLocalStorage() {\n var test = 'htmx:localStorageTest';\n try {\n localStorage.setItem(test, test);\n localStorage.removeItem(test);\n return true;\n } catch(e) {\n return false;\n }\n }\n\n function normalizePath(path) {\n try {\n var url = new URL(path);\n if (url) {\n path = url.pathname + url.search;\n }\n // remove trailing slash, unless index page\n if (!(/^\\/$/.test(path))) {\n path = path.replace(/\\/+$/, '');\n }\n return path;\n } catch (e) {\n // be kind to IE11, which doesn't support URL()\n return path;\n }\n }\n\n //==========================================================================================\n // public API\n //==========================================================================================\n\n function internalEval(str){\n return maybeEval(getDocument().body, function () {\n return eval(str);\n });\n }\n\n function onLoadHelper(callback) {\n var value = htmx.on(\"htmx:load\", function(evt) {\n callback(evt.detail.elt);\n });\n return value;\n }\n\n function logAll(){\n htmx.logger = function(elt, event, data) {\n if(console) {\n console.log(event, elt, data);\n }\n }\n }\n\n function logNone() {\n htmx.logger = null\n }\n\n function find(eltOrSelector, selector) {\n if (selector) {\n return eltOrSelector.querySelector(selector);\n } else {\n return find(getDocument(), eltOrSelector);\n }\n }\n\n function findAll(eltOrSelector, selector) {\n if (selector) {\n return eltOrSelector.querySelectorAll(selector);\n } else {\n return findAll(getDocument(), eltOrSelector);\n }\n }\n\n function removeElement(elt, delay) {\n elt = resolveTarget(elt);\n if (delay) {\n setTimeout(function(){\n removeElement(elt);\n elt = null;\n }, delay);\n } else {\n elt.parentElement.removeChild(elt);\n }\n }\n\n function addClassToElement(elt, clazz, delay) {\n elt = resolveTarget(elt);\n if (delay) {\n setTimeout(function(){\n addClassToElement(elt, clazz);\n elt = null;\n }, delay);\n } else {\n elt.classList && elt.classList.add(clazz);\n }\n }\n\n function removeClassFromElement(elt, clazz, delay) {\n elt = resolveTarget(elt);\n if (delay) {\n setTimeout(function(){\n removeClassFromElement(elt, clazz);\n elt = null;\n }, delay);\n } else {\n if (elt.classList) {\n elt.classList.remove(clazz);\n // if there are no classes left, remove the class attribute\n if (elt.classList.length === 0) {\n elt.removeAttribute(\"class\");\n }\n }\n }\n }\n\n function toggleClassOnElement(elt, clazz) {\n elt = resolveTarget(elt);\n elt.classList.toggle(clazz);\n }\n\n function takeClassForElement(elt, clazz) {\n elt = resolveTarget(elt);\n forEach(elt.parentElement.children, function(child){\n removeClassFromElement(child, clazz);\n })\n addClassToElement(elt, clazz);\n }\n\n function closest(elt, selector) {\n elt = resolveTarget(elt);\n if (elt.closest) {\n return elt.closest(selector);\n } else {\n // TODO remove when IE goes away\n do{\n if (elt == null || matches(elt, selector)){\n return elt;\n }\n }\n while (elt = elt && parentElt(elt));\n return null;\n }\n }\n\n function startsWith(str, prefix) {\n return str.substring(0, prefix.length) === prefix\n }\n\n function endsWith(str, suffix) {\n return str.substring(str.length - suffix.length) === suffix\n }\n\n function normalizeSelector(selector) {\n var trimmedSelector = selector.trim();\n if (startsWith(trimmedSelector, \"<\") && endsWith(trimmedSelector, \"/>\")) {\n return trimmedSelector.substring(1, trimmedSelector.length - 2);\n } else {\n return trimmedSelector;\n }\n }\n\n function querySelectorAllExt(elt, selector) {\n if (selector.indexOf(\"closest \") === 0) {\n return [closest(elt, normalizeSelector(selector.substr(8)))];\n } else if (selector.indexOf(\"find \") === 0) {\n return [find(elt, normalizeSelector(selector.substr(5)))];\n } else if (selector === \"next\") {\n return [elt.nextElementSibling]\n } else if (selector.indexOf(\"next \") === 0) {\n return [scanForwardQuery(elt, normalizeSelector(selector.substr(5)))];\n } else if (selector === \"previous\") {\n return [elt.previousElementSibling]\n } else if (selector.indexOf(\"previous \") === 0) {\n return [scanBackwardsQuery(elt, normalizeSelector(selector.substr(9)))];\n } else if (selector === 'document') {\n return [document];\n } else if (selector === 'window') {\n return [window];\n } else if (selector === 'body') {\n return [document.body];\n } else {\n return getDocument().querySelectorAll(normalizeSelector(selector));\n }\n }\n\n var scanForwardQuery = function(start, match) {\n var results = getDocument().querySelectorAll(match);\n for (var i = 0; i < results.length; i++) {\n var elt = results[i];\n if (elt.compareDocumentPosition(start) === Node.DOCUMENT_POSITION_PRECEDING) {\n return elt;\n }\n }\n }\n\n var scanBackwardsQuery = function(start, match) {\n var results = getDocument().querySelectorAll(match);\n for (var i = results.length - 1; i >= 0; i--) {\n var elt = results[i];\n if (elt.compareDocumentPosition(start) === Node.DOCUMENT_POSITION_FOLLOWING) {\n return elt;\n }\n }\n }\n\n function querySelectorExt(eltOrSelector, selector) {\n if (selector) {\n return querySelectorAllExt(eltOrSelector, selector)[0];\n } else {\n return querySelectorAllExt(getDocument().body, eltOrSelector)[0];\n }\n }\n\n function resolveTarget(arg2) {\n if (isType(arg2, 'String')) {\n return find(arg2);\n } else {\n return arg2;\n }\n }\n\n function processEventArgs(arg1, arg2, arg3) {\n if (isFunction(arg2)) {\n return {\n target: getDocument().body,\n event: arg1,\n listener: arg2\n }\n } else {\n return {\n target: resolveTarget(arg1),\n event: arg2,\n listener: arg3\n }\n }\n\n }\n\n function addEventListenerImpl(arg1, arg2, arg3) {\n ready(function(){\n var eventArgs = processEventArgs(arg1, arg2, arg3);\n eventArgs.target.addEventListener(eventArgs.event, eventArgs.listener);\n })\n var b = isFunction(arg2);\n return b ? arg2 : arg3;\n }\n\n function removeEventListenerImpl(arg1, arg2, arg3) {\n ready(function(){\n var eventArgs = processEventArgs(arg1, arg2, arg3);\n eventArgs.target.removeEventListener(eventArgs.event, eventArgs.listener);\n })\n return isFunction(arg2) ? arg2 : arg3;\n }\n\n //====================================================================\n // Node processing\n //====================================================================\n\n var DUMMY_ELT = getDocument().createElement(\"output\"); // dummy element for bad selectors\n function findAttributeTargets(elt, attrName) {\n var attrTarget = getClosestAttributeValue(elt, attrName);\n if (attrTarget) {\n if (attrTarget === \"this\") {\n return [findThisElement(elt, attrName)];\n } else {\n var result = querySelectorAllExt(elt, attrTarget);\n if (result.length === 0) {\n logError('The selector \"' + attrTarget + '\" on ' + attrName + \" returned no matches!\");\n return [DUMMY_ELT]\n } else {\n return result;\n }\n }\n }\n }\n\n function findThisElement(elt, attribute){\n return getClosestMatch(elt, function (elt) {\n return getAttributeValue(elt, attribute) != null;\n })\n }\n\n function getTarget(elt) {\n var targetStr = getClosestAttributeValue(elt, \"hx-target\");\n if (targetStr) {\n if (targetStr === \"this\") {\n return findThisElement(elt,'hx-target');\n } else {\n return querySelectorExt(elt, targetStr)\n }\n } else {\n var data = getInternalData(elt);\n if (data.boosted) {\n return getDocument().body;\n } else {\n return elt;\n }\n }\n }\n\n function shouldSettleAttribute(name) {\n var attributesToSettle = htmx.config.attributesToSettle;\n for (var i = 0; i < attributesToSettle.length; i++) {\n if (name === attributesToSettle[i]) {\n return true;\n }\n }\n return false;\n }\n\n function cloneAttributes(mergeTo, mergeFrom) {\n forEach(mergeTo.attributes, function (attr) {\n if (!mergeFrom.hasAttribute(attr.name) && shouldSettleAttribute(attr.name)) {\n mergeTo.removeAttribute(attr.name)\n }\n });\n forEach(mergeFrom.attributes, function (attr) {\n if (shouldSettleAttribute(attr.name)) {\n mergeTo.setAttribute(attr.name, attr.value);\n }\n });\n }\n\n function isInlineSwap(swapStyle, target) {\n var extensions = getExtensions(target);\n for (var i = 0; i < extensions.length; i++) {\n var extension = extensions[i];\n try {\n if (extension.isInlineSwap(swapStyle)) {\n return true;\n }\n } catch(e) {\n logError(e);\n }\n }\n return swapStyle === \"outerHTML\";\n }\n\n /**\n *\n * @param {string} oobValue\n * @param {HTMLElement} oobElement\n * @param {*} settleInfo\n * @returns\n */\n function oobSwap(oobValue, oobElement, settleInfo) {\n var selector = \"#\" + getRawAttribute(oobElement, \"id\");\n var swapStyle = \"outerHTML\";\n if (oobValue === \"true\") {\n // do nothing\n } else if (oobValue.indexOf(\":\") > 0) {\n swapStyle = oobValue.substr(0, oobValue.indexOf(\":\"));\n selector = oobValue.substr(oobValue.indexOf(\":\") + 1, oobValue.length);\n } else {\n swapStyle = oobValue;\n }\n\n var targets = getDocument().querySelectorAll(selector);\n if (targets) {\n forEach(\n targets,\n function (target) {\n var fragment;\n var oobElementClone = oobElement.cloneNode(true);\n fragment = getDocument().createDocumentFragment();\n fragment.appendChild(oobElementClone);\n if (!isInlineSwap(swapStyle, target)) {\n fragment = oobElementClone; // if this is not an inline swap, we use the content of the node, not the node itself\n }\n\n var beforeSwapDetails = {shouldSwap: true, target: target, fragment:fragment };\n if (!triggerEvent(target, 'htmx:oobBeforeSwap', beforeSwapDetails)) return;\n\n target = beforeSwapDetails.target; // allow re-targeting\n if (beforeSwapDetails['shouldSwap']){\n swap(swapStyle, target, target, fragment, settleInfo);\n }\n forEach(settleInfo.elts, function (elt) {\n triggerEvent(elt, 'htmx:oobAfterSwap', beforeSwapDetails);\n });\n }\n );\n oobElement.parentNode.removeChild(oobElement);\n } else {\n oobElement.parentNode.removeChild(oobElement);\n triggerErrorEvent(getDocument().body, \"htmx:oobErrorNoTarget\", {content: oobElement});\n }\n return oobValue;\n }\n\n function handleOutOfBandSwaps(elt, fragment, settleInfo) {\n var oobSelects = getClosestAttributeValue(elt, \"hx-select-oob\");\n if (oobSelects) {\n var oobSelectValues = oobSelects.split(\",\");\n for (var i = 0; i < oobSelectValues.length; i++) {\n var oobSelectValue = oobSelectValues[i].split(\":\", 2);\n var id = oobSelectValue[0].trim();\n if (id.indexOf(\"#\") === 0) {\n id = id.substring(1);\n }\n var oobValue = oobSelectValue[1] || \"true\";\n var oobElement = fragment.querySelector(\"#\" + id);\n if (oobElement) {\n oobSwap(oobValue, oobElement, settleInfo);\n }\n }\n }\n forEach(findAll(fragment, '[hx-swap-oob], [data-hx-swap-oob]'), function (oobElement) {\n var oobValue = getAttributeValue(oobElement, \"hx-swap-oob\");\n if (oobValue != null) {\n oobSwap(oobValue, oobElement, settleInfo);\n }\n });\n }\n\n function handlePreservedElements(fragment) {\n forEach(findAll(fragment, '[hx-preserve], [data-hx-preserve]'), function (preservedElt) {\n var id = getAttributeValue(preservedElt, \"id\");\n var oldElt = getDocument().getElementById(id);\n if (oldElt != null) {\n preservedElt.parentNode.replaceChild(oldElt, preservedElt);\n }\n });\n }\n\n function handleAttributes(parentNode, fragment, settleInfo) {\n forEach(fragment.querySelectorAll(\"[id]\"), function (newNode) {\n var id = getRawAttribute(newNode, \"id\")\n if (id && id.length > 0) {\n var normalizedId = id.replace(\"'\", \"\\\\'\");\n var normalizedTag = newNode.tagName.replace(':', '\\\\:');\n var oldNode = parentNode.querySelector(normalizedTag + \"[id='\" + normalizedId + \"']\");\n if (oldNode && oldNode !== parentNode) {\n var newAttributes = newNode.cloneNode();\n cloneAttributes(newNode, oldNode);\n settleInfo.tasks.push(function () {\n cloneAttributes(newNode, newAttributes);\n });\n }\n }\n });\n }\n\n function makeAjaxLoadTask(child) {\n return function () {\n removeClassFromElement(child, htmx.config.addedClass);\n processNode(child);\n processScripts(child);\n processFocus(child)\n triggerEvent(child, 'htmx:load');\n };\n }\n\n function processFocus(child) {\n var autofocus = \"[autofocus]\";\n var autoFocusedElt = matches(child, autofocus) ? child : child.querySelector(autofocus)\n if (autoFocusedElt != null) {\n autoFocusedElt.focus();\n }\n }\n\n function insertNodesBefore(parentNode, insertBefore, fragment, settleInfo) {\n handleAttributes(parentNode, fragment, settleInfo);\n while(fragment.childNodes.length > 0){\n var child = fragment.firstChild;\n addClassToElement(child, htmx.config.addedClass);\n parentNode.insertBefore(child, insertBefore);\n if (child.nodeType !== Node.TEXT_NODE && child.nodeType !== Node.COMMENT_NODE) {\n settleInfo.tasks.push(makeAjaxLoadTask(child));\n }\n }\n }\n\n // based on https://gist.github.com/hyamamoto/fd435505d29ebfa3d9716fd2be8d42f0,\n // derived from Java's string hashcode implementation\n function stringHash(string, hash) {\n var char = 0;\n while (char < string.length){\n hash = (hash << 5) - hash + string.charCodeAt(char++) | 0; // bitwise or ensures we have a 32-bit int\n }\n return hash;\n }\n\n function attributeHash(elt) {\n var hash = 0;\n // IE fix\n if (elt.attributes) {\n for (var i = 0; i < elt.attributes.length; i++) {\n var attribute = elt.attributes[i];\n if(attribute.value){ // only include attributes w/ actual values (empty is same as non-existent)\n hash = stringHash(attribute.name, hash);\n hash = stringHash(attribute.value, hash);\n }\n }\n }\n return hash;\n }\n\n function deInitOnHandlers(elt) {\n var internalData = getInternalData(elt);\n if (internalData.onHandlers) {\n for (var i = 0; i < internalData.onHandlers.length; i++) {\n const handlerInfo = internalData.onHandlers[i];\n elt.removeEventListener(handlerInfo.event, handlerInfo.listener);\n }\n delete internalData.onHandlers\n }\n }\n\n function deInitNode(element) {\n var internalData = getInternalData(element);\n if (internalData.timeout) {\n clearTimeout(internalData.timeout);\n }\n if (internalData.webSocket) {\n internalData.webSocket.close();\n }\n if (internalData.sseEventSource) {\n internalData.sseEventSource.close();\n }\n if (internalData.listenerInfos) {\n forEach(internalData.listenerInfos, function (info) {\n if (info.on) {\n info.on.removeEventListener(info.trigger, info.listener);\n }\n });\n }\n deInitOnHandlers(element);\n forEach(Object.keys(internalData), function(key) { delete internalData[key] });\n }\n\n function cleanUpElement(element) {\n triggerEvent(element, \"htmx:beforeCleanupElement\")\n deInitNode(element);\n if (element.children) { // IE\n forEach(element.children, function(child) { cleanUpElement(child) });\n }\n }\n\n function swapOuterHTML(target, fragment, settleInfo) {\n if (target.tagName === \"BODY\") {\n return swapInnerHTML(target, fragment, settleInfo);\n } else {\n // @type {HTMLElement}\n var newElt\n var eltBeforeNewContent = target.previousSibling;\n insertNodesBefore(parentElt(target), target, fragment, settleInfo);\n if (eltBeforeNewContent == null) {\n newElt = parentElt(target).firstChild;\n } else {\n newElt = eltBeforeNewContent.nextSibling;\n }\n settleInfo.elts = settleInfo.elts.filter(function(e) { return e != target });\n while(newElt && newElt !== target) {\n if (newElt.nodeType === Node.ELEMENT_NODE) {\n settleInfo.elts.push(newElt);\n }\n newElt = newElt.nextElementSibling;\n }\n cleanUpElement(target);\n parentElt(target).removeChild(target);\n }\n }\n\n function swapAfterBegin(target, fragment, settleInfo) {\n return insertNodesBefore(target, target.firstChild, fragment, settleInfo);\n }\n\n function swapBeforeBegin(target, fragment, settleInfo) {\n return insertNodesBefore(parentElt(target), target, fragment, settleInfo);\n }\n\n function swapBeforeEnd(target, fragment, settleInfo) {\n return insertNodesBefore(target, null, fragment, settleInfo);\n }\n\n function swapAfterEnd(target, fragment, settleInfo) {\n return insertNodesBefore(parentElt(target), target.nextSibling, fragment, settleInfo);\n }\n function swapDelete(target, fragment, settleInfo) {\n cleanUpElement(target);\n return parentElt(target).removeChild(target);\n }\n\n function swapInnerHTML(target, fragment, settleInfo) {\n var firstChild = target.firstChild;\n insertNodesBefore(target, firstChild, fragment, settleInfo);\n if (firstChild) {\n while (firstChild.nextSibling) {\n cleanUpElement(firstChild.nextSibling)\n target.removeChild(firstChild.nextSibling);\n }\n cleanUpElement(firstChild)\n target.removeChild(firstChild);\n }\n }\n\n function maybeSelectFromResponse(elt, fragment, selectOverride) {\n var selector = selectOverride || getClosestAttributeValue(elt, \"hx-select\");\n if (selector) {\n var newFragment = getDocument().createDocumentFragment();\n forEach(fragment.querySelectorAll(selector), function (node) {\n newFragment.appendChild(node);\n });\n fragment = newFragment;\n }\n return fragment;\n }\n\n function swap(swapStyle, elt, target, fragment, settleInfo) {\n switch (swapStyle) {\n case \"none\":\n return;\n case \"outerHTML\":\n swapOuterHTML(target, fragment, settleInfo);\n return;\n case \"afterbegin\":\n swapAfterBegin(target, fragment, settleInfo);\n return;\n case \"beforebegin\":\n swapBeforeBegin(target, fragment, settleInfo);\n return;\n case \"beforeend\":\n swapBeforeEnd(target, fragment, settleInfo);\n return;\n case \"afterend\":\n swapAfterEnd(target, fragment, settleInfo);\n return;\n case \"delete\":\n swapDelete(target, fragment, settleInfo);\n return;\n default:\n var extensions = getExtensions(elt);\n for (var i = 0; i < extensions.length; i++) {\n var ext = extensions[i];\n try {\n var newElements = ext.handleSwap(swapStyle, target, fragment, settleInfo);\n if (newElements) {\n if (typeof newElements.length !== 'undefined') {\n // if handleSwap returns an array (like) of elements, we handle them\n for (var j = 0; j < newElements.length; j++) {\n var child = newElements[j];\n if (child.nodeType !== Node.TEXT_NODE && child.nodeType !== Node.COMMENT_NODE) {\n settleInfo.tasks.push(makeAjaxLoadTask(child));\n }\n }\n }\n return;\n }\n } catch (e) {\n logError(e);\n }\n }\n if (swapStyle === \"innerHTML\") {\n swapInnerHTML(target, fragment, settleInfo);\n } else {\n swap(htmx.config.defaultSwapStyle, elt, target, fragment, settleInfo);\n }\n }\n }\n\n function findTitle(content) {\n if (content.indexOf(' -1) {\n var contentWithSvgsRemoved = content.replace(SVG_TAGS_REGEX, '');\n var result = contentWithSvgsRemoved.match(TITLE_TAG_REGEX);\n if (result) {\n return result[2];\n }\n }\n }\n\n function selectAndSwap(swapStyle, target, elt, responseText, settleInfo, selectOverride) {\n settleInfo.title = findTitle(responseText);\n var fragment = makeFragment(responseText);\n if (fragment) {\n handleOutOfBandSwaps(elt, fragment, settleInfo);\n fragment = maybeSelectFromResponse(elt, fragment, selectOverride);\n handlePreservedElements(fragment);\n return swap(swapStyle, elt, target, fragment, settleInfo);\n }\n }\n\n function handleTrigger(xhr, header, elt) {\n var triggerBody = xhr.getResponseHeader(header);\n if (triggerBody.indexOf(\"{\") === 0) {\n var triggers = parseJSON(triggerBody);\n for (var eventName in triggers) {\n if (triggers.hasOwnProperty(eventName)) {\n var detail = triggers[eventName];\n if (!isRawObject(detail)) {\n detail = {\"value\": detail}\n }\n triggerEvent(elt, eventName, detail);\n }\n }\n } else {\n var eventNames = triggerBody.split(\",\")\n for (var i = 0; i < eventNames.length; i++) {\n triggerEvent(elt, eventNames[i].trim(), []);\n }\n }\n }\n\n var WHITESPACE = /\\s/;\n var WHITESPACE_OR_COMMA = /[\\s,]/;\n var SYMBOL_START = /[_$a-zA-Z]/;\n var SYMBOL_CONT = /[_$a-zA-Z0-9]/;\n var STRINGISH_START = ['\"', \"'\", \"/\"];\n var NOT_WHITESPACE = /[^\\s]/;\n var COMBINED_SELECTOR_START = /[{(]/;\n var COMBINED_SELECTOR_END = /[})]/;\n function tokenizeString(str) {\n var tokens = [];\n var position = 0;\n while (position < str.length) {\n if(SYMBOL_START.exec(str.charAt(position))) {\n var startPosition = position;\n while (SYMBOL_CONT.exec(str.charAt(position + 1))) {\n position++;\n }\n tokens.push(str.substr(startPosition, position - startPosition + 1));\n } else if (STRINGISH_START.indexOf(str.charAt(position)) !== -1) {\n var startChar = str.charAt(position);\n var startPosition = position;\n position++;\n while (position < str.length && str.charAt(position) !== startChar ) {\n if (str.charAt(position) === \"\\\\\") {\n position++;\n }\n position++;\n }\n tokens.push(str.substr(startPosition, position - startPosition + 1));\n } else {\n var symbol = str.charAt(position);\n tokens.push(symbol);\n }\n position++;\n }\n return tokens;\n }\n\n function isPossibleRelativeReference(token, last, paramName) {\n return SYMBOL_START.exec(token.charAt(0)) &&\n token !== \"true\" &&\n token !== \"false\" &&\n token !== \"this\" &&\n token !== paramName &&\n last !== \".\";\n }\n\n function maybeGenerateConditional(elt, tokens, paramName) {\n if (tokens[0] === '[') {\n tokens.shift();\n var bracketCount = 1;\n var conditionalSource = \" return (function(\" + paramName + \"){ return (\";\n var last = null;\n while (tokens.length > 0) {\n var token = tokens[0];\n if (token === \"]\") {\n bracketCount--;\n if (bracketCount === 0) {\n if (last === null) {\n conditionalSource = conditionalSource + \"true\";\n }\n tokens.shift();\n conditionalSource += \")})\";\n try {\n var conditionFunction = maybeEval(elt,function () {\n return Function(conditionalSource)();\n },\n function(){return true})\n conditionFunction.source = conditionalSource;\n return conditionFunction;\n } catch (e) {\n triggerErrorEvent(getDocument().body, \"htmx:syntax:error\", {error:e, source:conditionalSource})\n return null;\n }\n }\n } else if (token === \"[\") {\n bracketCount++;\n }\n if (isPossibleRelativeReference(token, last, paramName)) {\n conditionalSource += \"((\" + paramName + \".\" + token + \") ? (\" + paramName + \".\" + token + \") : (window.\" + token + \"))\";\n } else {\n conditionalSource = conditionalSource + token;\n }\n last = tokens.shift();\n }\n }\n }\n\n function consumeUntil(tokens, match) {\n var result = \"\";\n while (tokens.length > 0 && !match.test(tokens[0])) {\n result += tokens.shift();\n }\n return result;\n }\n\n function consumeCSSSelector(tokens) {\n var result;\n if (tokens.length > 0 && COMBINED_SELECTOR_START.test(tokens[0])) {\n tokens.shift();\n result = consumeUntil(tokens, COMBINED_SELECTOR_END).trim();\n tokens.shift();\n } else {\n result = consumeUntil(tokens, WHITESPACE_OR_COMMA);\n }\n return result;\n }\n\n var INPUT_SELECTOR = 'input, textarea, select';\n\n /**\n * @param {HTMLElement} elt\n * @param {string} explicitTrigger\n * @param {cache} cache for trigger specs\n * @returns {import(\"./htmx\").HtmxTriggerSpecification[]}\n */\n function parseAndCacheTrigger(elt, explicitTrigger, cache) {\n var triggerSpecs = [];\n var tokens = tokenizeString(explicitTrigger);\n do {\n consumeUntil(tokens, NOT_WHITESPACE);\n var initialLength = tokens.length;\n var trigger = consumeUntil(tokens, /[,\\[\\s]/);\n if (trigger !== \"\") {\n if (trigger === \"every\") {\n var every = {trigger: 'every'};\n consumeUntil(tokens, NOT_WHITESPACE);\n every.pollInterval = parseInterval(consumeUntil(tokens, /[,\\[\\s]/));\n consumeUntil(tokens, NOT_WHITESPACE);\n var eventFilter = maybeGenerateConditional(elt, tokens, \"event\");\n if (eventFilter) {\n every.eventFilter = eventFilter;\n }\n triggerSpecs.push(every);\n } else if (trigger.indexOf(\"sse:\") === 0) {\n triggerSpecs.push({trigger: 'sse', sseEvent: trigger.substr(4)});\n } else {\n var triggerSpec = {trigger: trigger};\n var eventFilter = maybeGenerateConditional(elt, tokens, \"event\");\n if (eventFilter) {\n triggerSpec.eventFilter = eventFilter;\n }\n while (tokens.length > 0 && tokens[0] !== \",\") {\n consumeUntil(tokens, NOT_WHITESPACE)\n var token = tokens.shift();\n if (token === \"changed\") {\n triggerSpec.changed = true;\n } else if (token === \"once\") {\n triggerSpec.once = true;\n } else if (token === \"consume\") {\n triggerSpec.consume = true;\n } else if (token === \"delay\" && tokens[0] === \":\") {\n tokens.shift();\n triggerSpec.delay = parseInterval(consumeUntil(tokens, WHITESPACE_OR_COMMA));\n } else if (token === \"from\" && tokens[0] === \":\") {\n tokens.shift();\n if (COMBINED_SELECTOR_START.test(tokens[0])) {\n var from_arg = consumeCSSSelector(tokens);\n } else {\n var from_arg = consumeUntil(tokens, WHITESPACE_OR_COMMA);\n if (from_arg === \"closest\" || from_arg === \"find\" || from_arg === \"next\" || from_arg === \"previous\") {\n tokens.shift();\n var selector = consumeCSSSelector(tokens);\n // `next` and `previous` allow a selector-less syntax\n if (selector.length > 0) {\n from_arg += \" \" + selector;\n }\n }\n }\n triggerSpec.from = from_arg;\n } else if (token === \"target\" && tokens[0] === \":\") {\n tokens.shift();\n triggerSpec.target = consumeCSSSelector(tokens);\n } else if (token === \"throttle\" && tokens[0] === \":\") {\n tokens.shift();\n triggerSpec.throttle = parseInterval(consumeUntil(tokens, WHITESPACE_OR_COMMA));\n } else if (token === \"queue\" && tokens[0] === \":\") {\n tokens.shift();\n triggerSpec.queue = consumeUntil(tokens, WHITESPACE_OR_COMMA);\n } else if (token === \"root\" && tokens[0] === \":\") {\n tokens.shift();\n triggerSpec[token] = consumeCSSSelector(tokens);\n } else if (token === \"threshold\" && tokens[0] === \":\") {\n tokens.shift();\n triggerSpec[token] = consumeUntil(tokens, WHITESPACE_OR_COMMA);\n } else {\n triggerErrorEvent(elt, \"htmx:syntax:error\", {token:tokens.shift()});\n }\n }\n triggerSpecs.push(triggerSpec);\n }\n }\n if (tokens.length === initialLength) {\n triggerErrorEvent(elt, \"htmx:syntax:error\", {token:tokens.shift()});\n }\n consumeUntil(tokens, NOT_WHITESPACE);\n } while (tokens[0] === \",\" && tokens.shift())\n if (cache) {\n cache[explicitTrigger] = triggerSpecs\n }\n return triggerSpecs\n }\n\n /**\n * @param {HTMLElement} elt\n * @returns {import(\"./htmx\").HtmxTriggerSpecification[]}\n */\n function getTriggerSpecs(elt) {\n var explicitTrigger = getAttributeValue(elt, 'hx-trigger');\n var triggerSpecs = [];\n if (explicitTrigger) {\n var cache = htmx.config.triggerSpecsCache\n triggerSpecs = (cache && cache[explicitTrigger]) || parseAndCacheTrigger(elt, explicitTrigger, cache)\n }\n\n if (triggerSpecs.length > 0) {\n return triggerSpecs;\n } else if (matches(elt, 'form')) {\n return [{trigger: 'submit'}];\n } else if (matches(elt, 'input[type=\"button\"], input[type=\"submit\"]')){\n return [{trigger: 'click'}];\n } else if (matches(elt, INPUT_SELECTOR)) {\n return [{trigger: 'change'}];\n } else {\n return [{trigger: 'click'}];\n }\n }\n\n function cancelPolling(elt) {\n getInternalData(elt).cancelled = true;\n }\n\n function processPolling(elt, handler, spec) {\n var nodeData = getInternalData(elt);\n nodeData.timeout = setTimeout(function () {\n if (bodyContains(elt) && nodeData.cancelled !== true) {\n if (!maybeFilterEvent(spec, elt, makeEvent('hx:poll:trigger', {\n triggerSpec: spec,\n target: elt\n }))) {\n handler(elt);\n }\n processPolling(elt, handler, spec);\n }\n }, spec.pollInterval);\n }\n\n function isLocalLink(elt) {\n return location.hostname === elt.hostname &&\n getRawAttribute(elt,'href') &&\n getRawAttribute(elt,'href').indexOf(\"#\") !== 0;\n }\n\n function boostElement(elt, nodeData, triggerSpecs) {\n if ((elt.tagName === \"A\" && isLocalLink(elt) && (elt.target === \"\" || elt.target === \"_self\")) || elt.tagName === \"FORM\") {\n nodeData.boosted = true;\n var verb, path;\n if (elt.tagName === \"A\") {\n verb = \"get\";\n path = getRawAttribute(elt, 'href')\n } else {\n var rawAttribute = getRawAttribute(elt, \"method\");\n verb = rawAttribute ? rawAttribute.toLowerCase() : \"get\";\n if (verb === \"get\") {\n }\n path = getRawAttribute(elt, 'action');\n }\n triggerSpecs.forEach(function(triggerSpec) {\n addEventListener(elt, function(elt, evt) {\n if (closest(elt, htmx.config.disableSelector)) {\n cleanUpElement(elt)\n return\n }\n issueAjaxRequest(verb, path, elt, evt)\n }, nodeData, triggerSpec, true);\n });\n }\n }\n\n /**\n *\n * @param {Event} evt\n * @param {HTMLElement} elt\n * @returns\n */\n function shouldCancel(evt, elt) {\n if (evt.type === \"submit\" || evt.type === \"click\") {\n if (elt.tagName === \"FORM\") {\n return true;\n }\n if (matches(elt, 'input[type=\"submit\"], button') && closest(elt, 'form') !== null) {\n return true;\n }\n if (elt.tagName === \"A\" && elt.href &&\n (elt.getAttribute('href') === '#' || elt.getAttribute('href').indexOf(\"#\") !== 0)) {\n return true;\n }\n }\n return false;\n }\n\n function ignoreBoostedAnchorCtrlClick(elt, evt) {\n return getInternalData(elt).boosted && elt.tagName === \"A\" && evt.type === \"click\" && (evt.ctrlKey || evt.metaKey);\n }\n\n function maybeFilterEvent(triggerSpec, elt, evt) {\n var eventFilter = triggerSpec.eventFilter;\n if(eventFilter){\n try {\n return eventFilter.call(elt, evt) !== true;\n } catch(e) {\n triggerErrorEvent(getDocument().body, \"htmx:eventFilter:error\", {error: e, source:eventFilter.source});\n return true;\n }\n }\n return false;\n }\n\n function addEventListener(elt, handler, nodeData, triggerSpec, explicitCancel) {\n var elementData = getInternalData(elt);\n var eltsToListenOn;\n if (triggerSpec.from) {\n eltsToListenOn = querySelectorAllExt(elt, triggerSpec.from);\n } else {\n eltsToListenOn = [elt];\n }\n // store the initial values of the elements, so we can tell if they change\n if (triggerSpec.changed) {\n eltsToListenOn.forEach(function (eltToListenOn) {\n var eltToListenOnData = getInternalData(eltToListenOn);\n eltToListenOnData.lastValue = eltToListenOn.value;\n })\n }\n forEach(eltsToListenOn, function (eltToListenOn) {\n var eventListener = function (evt) {\n if (!bodyContains(elt)) {\n eltToListenOn.removeEventListener(triggerSpec.trigger, eventListener);\n return;\n }\n if (ignoreBoostedAnchorCtrlClick(elt, evt)) {\n return;\n }\n if (explicitCancel || shouldCancel(evt, elt)) {\n evt.preventDefault();\n }\n if (maybeFilterEvent(triggerSpec, elt, evt)) {\n return;\n }\n var eventData = getInternalData(evt);\n eventData.triggerSpec = triggerSpec;\n if (eventData.handledFor == null) {\n eventData.handledFor = [];\n }\n if (eventData.handledFor.indexOf(elt) < 0) {\n eventData.handledFor.push(elt);\n if (triggerSpec.consume) {\n evt.stopPropagation();\n }\n if (triggerSpec.target && evt.target) {\n if (!matches(evt.target, triggerSpec.target)) {\n return;\n }\n }\n if (triggerSpec.once) {\n if (elementData.triggeredOnce) {\n return;\n } else {\n elementData.triggeredOnce = true;\n }\n }\n if (triggerSpec.changed) {\n var eltToListenOnData = getInternalData(eltToListenOn)\n if (eltToListenOnData.lastValue === eltToListenOn.value) {\n return;\n }\n eltToListenOnData.lastValue = eltToListenOn.value\n }\n if (elementData.delayed) {\n clearTimeout(elementData.delayed);\n }\n if (elementData.throttle) {\n return;\n }\n\n if (triggerSpec.throttle > 0) {\n if (!elementData.throttle) {\n handler(elt, evt);\n elementData.throttle = setTimeout(function () {\n elementData.throttle = null;\n }, triggerSpec.throttle);\n }\n } else if (triggerSpec.delay > 0) {\n elementData.delayed = setTimeout(function() { handler(elt, evt) }, triggerSpec.delay);\n } else {\n triggerEvent(elt, 'htmx:trigger')\n handler(elt, evt);\n }\n }\n };\n if (nodeData.listenerInfos == null) {\n nodeData.listenerInfos = [];\n }\n nodeData.listenerInfos.push({\n trigger: triggerSpec.trigger,\n listener: eventListener,\n on: eltToListenOn\n })\n eltToListenOn.addEventListener(triggerSpec.trigger, eventListener);\n });\n }\n\n var windowIsScrolling = false // used by initScrollHandler\n var scrollHandler = null;\n function initScrollHandler() {\n if (!scrollHandler) {\n scrollHandler = function() {\n windowIsScrolling = true\n };\n window.addEventListener(\"scroll\", scrollHandler)\n setInterval(function() {\n if (windowIsScrolling) {\n windowIsScrolling = false;\n forEach(getDocument().querySelectorAll(\"[hx-trigger='revealed'],[data-hx-trigger='revealed']\"), function (elt) {\n maybeReveal(elt);\n })\n }\n }, 200);\n }\n }\n\n function maybeReveal(elt) {\n if (!hasAttribute(elt,'data-hx-revealed') && isScrolledIntoView(elt)) {\n elt.setAttribute('data-hx-revealed', 'true');\n var nodeData = getInternalData(elt);\n if (nodeData.initHash) {\n triggerEvent(elt, 'revealed');\n } else {\n // if the node isn't initialized, wait for it before triggering the request\n elt.addEventListener(\"htmx:afterProcessNode\", function(evt) { triggerEvent(elt, 'revealed') }, {once: true});\n }\n }\n }\n\n //====================================================================\n // Web Sockets\n //====================================================================\n\n function processWebSocketInfo(elt, nodeData, info) {\n var values = splitOnWhitespace(info);\n for (var i = 0; i < values.length; i++) {\n var value = values[i].split(/:(.+)/);\n if (value[0] === \"connect\") {\n ensureWebSocket(elt, value[1], 0);\n }\n if (value[0] === \"send\") {\n processWebSocketSend(elt);\n }\n }\n }\n\n function ensureWebSocket(elt, wssSource, retryCount) {\n if (!bodyContains(elt)) {\n return; // stop ensuring websocket connection when socket bearing element ceases to exist\n }\n\n if (wssSource.indexOf(\"/\") == 0) { // complete absolute paths only\n var base_part = location.hostname + (location.port ? ':'+location.port: '');\n if (location.protocol == 'https:') {\n wssSource = \"wss://\" + base_part + wssSource;\n } else if (location.protocol == 'http:') {\n wssSource = \"ws://\" + base_part + wssSource;\n }\n }\n var socket = htmx.createWebSocket(wssSource);\n socket.onerror = function (e) {\n triggerErrorEvent(elt, \"htmx:wsError\", {error:e, socket:socket});\n maybeCloseWebSocketSource(elt);\n };\n\n socket.onclose = function (e) {\n if ([1006, 1012, 1013].indexOf(e.code) >= 0) { // Abnormal Closure/Service Restart/Try Again Later\n var delay = getWebSocketReconnectDelay(retryCount);\n setTimeout(function() {\n ensureWebSocket(elt, wssSource, retryCount+1); // creates a websocket with a new timeout\n }, delay);\n }\n };\n socket.onopen = function (e) {\n retryCount = 0;\n }\n\n getInternalData(elt).webSocket = socket;\n socket.addEventListener('message', function (event) {\n if (maybeCloseWebSocketSource(elt)) {\n return;\n }\n\n var response = event.data;\n withExtensions(elt, function(extension){\n response = extension.transformResponse(response, null, elt);\n });\n\n var settleInfo = makeSettleInfo(elt);\n var fragment = makeFragment(response);\n var children = toArray(fragment.children);\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n oobSwap(getAttributeValue(child, \"hx-swap-oob\") || \"true\", child, settleInfo);\n }\n\n settleImmediately(settleInfo.tasks);\n });\n }\n\n function maybeCloseWebSocketSource(elt) {\n if (!bodyContains(elt)) {\n getInternalData(elt).webSocket.close();\n return true;\n }\n }\n\n function processWebSocketSend(elt) {\n var webSocketSourceElt = getClosestMatch(elt, function (parent) {\n return getInternalData(parent).webSocket != null;\n });\n if (webSocketSourceElt) {\n elt.addEventListener(getTriggerSpecs(elt)[0].trigger, function (evt) {\n var webSocket = getInternalData(webSocketSourceElt).webSocket;\n var headers = getHeaders(elt, webSocketSourceElt);\n var results = getInputValues(elt, 'post');\n var errors = results.errors;\n var rawParameters = results.values;\n var expressionVars = getExpressionVars(elt);\n var allParameters = mergeObjects(rawParameters, expressionVars);\n var filteredParameters = filterValues(allParameters, elt);\n filteredParameters['HEADERS'] = headers;\n if (errors && errors.length > 0) {\n triggerEvent(elt, 'htmx:validation:halted', errors);\n return;\n }\n webSocket.send(JSON.stringify(filteredParameters));\n if(shouldCancel(evt, elt)){\n evt.preventDefault();\n }\n });\n } else {\n triggerErrorEvent(elt, \"htmx:noWebSocketSourceError\");\n }\n }\n\n function getWebSocketReconnectDelay(retryCount) {\n var delay = htmx.config.wsReconnectDelay;\n if (typeof delay === 'function') {\n // @ts-ignore\n return delay(retryCount);\n }\n if (delay === 'full-jitter') {\n var exp = Math.min(retryCount, 6);\n var maxDelay = 1000 * Math.pow(2, exp);\n return maxDelay * Math.random();\n }\n logError('htmx.config.wsReconnectDelay must either be a function or the string \"full-jitter\"');\n }\n\n //====================================================================\n // Server Sent Events\n //====================================================================\n\n function processSSEInfo(elt, nodeData, info) {\n var values = splitOnWhitespace(info);\n for (var i = 0; i < values.length; i++) {\n var value = values[i].split(/:(.+)/);\n if (value[0] === \"connect\") {\n processSSESource(elt, value[1]);\n }\n\n if ((value[0] === \"swap\")) {\n processSSESwap(elt, value[1])\n }\n }\n }\n\n function processSSESource(elt, sseSrc) {\n var source = htmx.createEventSource(sseSrc);\n source.onerror = function (e) {\n triggerErrorEvent(elt, \"htmx:sseError\", {error:e, source:source});\n maybeCloseSSESource(elt);\n };\n getInternalData(elt).sseEventSource = source;\n }\n\n function processSSESwap(elt, sseEventName) {\n var sseSourceElt = getClosestMatch(elt, hasEventSource);\n if (sseSourceElt) {\n var sseEventSource = getInternalData(sseSourceElt).sseEventSource;\n var sseListener = function (event) {\n if (maybeCloseSSESource(sseSourceElt)) {\n return;\n }\n if (!bodyContains(elt)) {\n sseEventSource.removeEventListener(sseEventName, sseListener);\n return;\n }\n\n ///////////////////////////\n // TODO: merge this code with AJAX and WebSockets code in the future.\n\n var response = event.data;\n withExtensions(elt, function(extension){\n response = extension.transformResponse(response, null, elt);\n });\n\n var swapSpec = getSwapSpecification(elt)\n var target = getTarget(elt)\n var settleInfo = makeSettleInfo(elt);\n\n selectAndSwap(swapSpec.swapStyle, target, elt, response, settleInfo)\n settleImmediately(settleInfo.tasks)\n triggerEvent(elt, \"htmx:sseMessage\", event)\n };\n\n getInternalData(elt).sseListener = sseListener;\n sseEventSource.addEventListener(sseEventName, sseListener);\n } else {\n triggerErrorEvent(elt, \"htmx:noSSESourceError\");\n }\n }\n\n function processSSETrigger(elt, handler, sseEventName) {\n var sseSourceElt = getClosestMatch(elt, hasEventSource);\n if (sseSourceElt) {\n var sseEventSource = getInternalData(sseSourceElt).sseEventSource;\n var sseListener = function () {\n if (!maybeCloseSSESource(sseSourceElt)) {\n if (bodyContains(elt)) {\n handler(elt);\n } else {\n sseEventSource.removeEventListener(sseEventName, sseListener);\n }\n }\n };\n getInternalData(elt).sseListener = sseListener;\n sseEventSource.addEventListener(sseEventName, sseListener);\n } else {\n triggerErrorEvent(elt, \"htmx:noSSESourceError\");\n }\n }\n\n function maybeCloseSSESource(elt) {\n if (!bodyContains(elt)) {\n getInternalData(elt).sseEventSource.close();\n return true;\n }\n }\n\n function hasEventSource(node) {\n return getInternalData(node).sseEventSource != null;\n }\n\n //====================================================================\n\n function loadImmediately(elt, handler, nodeData, delay) {\n var load = function(){\n if (!nodeData.loaded) {\n nodeData.loaded = true;\n handler(elt);\n }\n }\n if (delay > 0) {\n setTimeout(load, delay);\n } else {\n load();\n }\n }\n\n function processVerbs(elt, nodeData, triggerSpecs) {\n var explicitAction = false;\n forEach(VERBS, function (verb) {\n if (hasAttribute(elt,'hx-' + verb)) {\n var path = getAttributeValue(elt, 'hx-' + verb);\n explicitAction = true;\n nodeData.path = path;\n nodeData.verb = verb;\n triggerSpecs.forEach(function(triggerSpec) {\n addTriggerHandler(elt, triggerSpec, nodeData, function (elt, evt) {\n if (closest(elt, htmx.config.disableSelector)) {\n cleanUpElement(elt)\n return\n }\n issueAjaxRequest(verb, path, elt, evt)\n })\n });\n }\n });\n return explicitAction;\n }\n\n function addTriggerHandler(elt, triggerSpec, nodeData, handler) {\n if (triggerSpec.sseEvent) {\n processSSETrigger(elt, handler, triggerSpec.sseEvent);\n } else if (triggerSpec.trigger === \"revealed\") {\n initScrollHandler();\n addEventListener(elt, handler, nodeData, triggerSpec);\n maybeReveal(elt);\n } else if (triggerSpec.trigger === \"intersect\") {\n var observerOptions = {};\n if (triggerSpec.root) {\n observerOptions.root = querySelectorExt(elt, triggerSpec.root)\n }\n if (triggerSpec.threshold) {\n observerOptions.threshold = parseFloat(triggerSpec.threshold);\n }\n var observer = new IntersectionObserver(function (entries) {\n for (var i = 0; i < entries.length; i++) {\n var entry = entries[i];\n if (entry.isIntersecting) {\n triggerEvent(elt, \"intersect\");\n break;\n }\n }\n }, observerOptions);\n observer.observe(elt);\n addEventListener(elt, handler, nodeData, triggerSpec);\n } else if (triggerSpec.trigger === \"load\") {\n if (!maybeFilterEvent(triggerSpec, elt, makeEvent(\"load\", {elt: elt}))) {\n loadImmediately(elt, handler, nodeData, triggerSpec.delay);\n }\n } else if (triggerSpec.pollInterval > 0) {\n nodeData.polling = true;\n processPolling(elt, handler, triggerSpec);\n } else {\n addEventListener(elt, handler, nodeData, triggerSpec);\n }\n }\n\n function evalScript(script) {\n if (htmx.config.allowScriptTags && (script.type === \"text/javascript\" || script.type === \"module\" || script.type === \"\") ) {\n var newScript = getDocument().createElement(\"script\");\n forEach(script.attributes, function (attr) {\n newScript.setAttribute(attr.name, attr.value);\n });\n newScript.textContent = script.textContent;\n newScript.async = false;\n if (htmx.config.inlineScriptNonce) {\n newScript.nonce = htmx.config.inlineScriptNonce;\n }\n var parent = script.parentElement;\n\n try {\n parent.insertBefore(newScript, script);\n } catch (e) {\n logError(e);\n } finally {\n // remove old script element, but only if it is still in DOM\n if (script.parentElement) {\n script.parentElement.removeChild(script);\n }\n }\n }\n }\n\n function processScripts(elt) {\n if (matches(elt, \"script\")) {\n evalScript(elt);\n }\n forEach(findAll(elt, \"script\"), function (script) {\n evalScript(script);\n });\n }\n\n function shouldProcessHxOn(elt) {\n var attributes = elt.attributes\n for (var j = 0; j < attributes.length; j++) {\n var attrName = attributes[j].name\n if (startsWith(attrName, \"hx-on:\") || startsWith(attrName, \"data-hx-on:\") ||\n startsWith(attrName, \"hx-on-\") || startsWith(attrName, \"data-hx-on-\")) {\n return true\n }\n }\n return false\n }\n\n function findHxOnWildcardElements(elt) {\n var node = null\n var elements = []\n\n if (shouldProcessHxOn(elt)) {\n elements.push(elt)\n }\n\n if (document.evaluate) {\n var iter = document.evaluate('.//*[@*[ starts-with(name(), \"hx-on:\") or starts-with(name(), \"data-hx-on:\") or' +\n ' starts-with(name(), \"hx-on-\") or starts-with(name(), \"data-hx-on-\") ]]', elt)\n while (node = iter.iterateNext()) elements.push(node)\n } else {\n var allElements = elt.getElementsByTagName(\"*\")\n for (var i = 0; i < allElements.length; i++) {\n if (shouldProcessHxOn(allElements[i])) {\n elements.push(allElements[i])\n }\n }\n }\n\n return elements\n }\n\n function findElementsToProcess(elt) {\n if (elt.querySelectorAll) {\n var boostedSelector = \", [hx-boost] a, [data-hx-boost] a, a[hx-boost], a[data-hx-boost]\";\n var results = elt.querySelectorAll(VERB_SELECTOR + boostedSelector + \", form, [type='submit'], [hx-sse], [data-hx-sse], [hx-ws],\" +\n \" [data-hx-ws], [hx-ext], [data-hx-ext], [hx-trigger], [data-hx-trigger], [hx-on], [data-hx-on]\");\n return results;\n } else {\n return [];\n }\n }\n\n // Handle submit buttons/inputs that have the form attribute set\n // see https://developer.mozilla.org/docs/Web/HTML/Element/button\n function maybeSetLastButtonClicked(evt) {\n var elt = closest(evt.target, \"button, input[type='submit']\");\n var internalData = getRelatedFormData(evt)\n if (internalData) {\n internalData.lastButtonClicked = elt;\n }\n };\n function maybeUnsetLastButtonClicked(evt){\n var internalData = getRelatedFormData(evt)\n if (internalData) {\n internalData.lastButtonClicked = null;\n }\n }\n function getRelatedFormData(evt) {\n var elt = closest(evt.target, \"button, input[type='submit']\");\n if (!elt) {\n return;\n }\n var form = resolveTarget('#' + getRawAttribute(elt, 'form')) || closest(elt, 'form');\n if (!form) {\n return;\n }\n return getInternalData(form);\n }\n function initButtonTracking(elt) {\n // need to handle both click and focus in:\n // focusin - in case someone tabs in to a button and hits the space bar\n // click - on OSX buttons do not focus on click see https://bugs.webkit.org/show_bug.cgi?id=13724\n elt.addEventListener('click', maybeSetLastButtonClicked)\n elt.addEventListener('focusin', maybeSetLastButtonClicked)\n elt.addEventListener('focusout', maybeUnsetLastButtonClicked)\n }\n\n function countCurlies(line) {\n var tokens = tokenizeString(line);\n var netCurlies = 0;\n for (var i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (token === \"{\") {\n netCurlies++;\n } else if (token === \"}\") {\n netCurlies--;\n }\n }\n return netCurlies;\n }\n\n function addHxOnEventHandler(elt, eventName, code) {\n var nodeData = getInternalData(elt);\n if (!Array.isArray(nodeData.onHandlers)) {\n nodeData.onHandlers = [];\n }\n var func;\n var listener = function (e) {\n return maybeEval(elt, function() {\n if (!func) {\n func = new Function(\"event\", code);\n }\n func.call(elt, e);\n });\n };\n elt.addEventListener(eventName, listener);\n nodeData.onHandlers.push({event:eventName, listener:listener});\n }\n\n function processHxOn(elt) {\n var hxOnValue = getAttributeValue(elt, 'hx-on');\n if (hxOnValue) {\n var handlers = {}\n var lines = hxOnValue.split(\"\\n\");\n var currentEvent = null;\n var curlyCount = 0;\n while (lines.length > 0) {\n var line = lines.shift();\n var match = line.match(/^\\s*([a-zA-Z:\\-\\.]+:)(.*)/);\n if (curlyCount === 0 && match) {\n line.split(\":\")\n currentEvent = match[1].slice(0, -1); // strip last colon\n handlers[currentEvent] = match[2];\n } else {\n handlers[currentEvent] += line;\n }\n curlyCount += countCurlies(line);\n }\n\n for (var eventName in handlers) {\n addHxOnEventHandler(elt, eventName, handlers[eventName]);\n }\n }\n }\n\n function processHxOnWildcard(elt) {\n // wipe any previous on handlers so that this function takes precedence\n deInitOnHandlers(elt)\n\n for (var i = 0; i < elt.attributes.length; i++) {\n var name = elt.attributes[i].name\n var value = elt.attributes[i].value\n if (startsWith(name, \"hx-on\") || startsWith(name, \"data-hx-on\")) {\n var afterOnPosition = name.indexOf(\"-on\") + 3;\n var nextChar = name.slice(afterOnPosition, afterOnPosition + 1);\n if (nextChar === \"-\" || nextChar === \":\") {\n var eventName = name.slice(afterOnPosition + 1);\n // if the eventName starts with a colon or dash, prepend \"htmx\" for shorthand support\n if (startsWith(eventName, \":\")) {\n eventName = \"htmx\" + eventName\n } else if (startsWith(eventName, \"-\")) {\n eventName = \"htmx:\" + eventName.slice(1);\n } else if (startsWith(eventName, \"htmx-\")) {\n eventName = \"htmx:\" + eventName.slice(5);\n }\n\n addHxOnEventHandler(elt, eventName, value)\n }\n }\n }\n }\n\n function initNode(elt) {\n if (closest(elt, htmx.config.disableSelector)) {\n cleanUpElement(elt)\n return;\n }\n var nodeData = getInternalData(elt);\n if (nodeData.initHash !== attributeHash(elt)) {\n // clean up any previously processed info\n deInitNode(elt);\n\n nodeData.initHash = attributeHash(elt);\n\n processHxOn(elt);\n\n triggerEvent(elt, \"htmx:beforeProcessNode\")\n\n if (elt.value) {\n nodeData.lastValue = elt.value;\n }\n\n var triggerSpecs = getTriggerSpecs(elt);\n var hasExplicitHttpAction = processVerbs(elt, nodeData, triggerSpecs);\n\n if (!hasExplicitHttpAction) {\n if (getClosestAttributeValue(elt, \"hx-boost\") === \"true\") {\n boostElement(elt, nodeData, triggerSpecs);\n } else if (hasAttribute(elt, 'hx-trigger')) {\n triggerSpecs.forEach(function (triggerSpec) {\n // For \"naked\" triggers, don't do anything at all\n addTriggerHandler(elt, triggerSpec, nodeData, function () {\n })\n })\n }\n }\n\n // Handle submit buttons/inputs that have the form attribute set\n // see https://developer.mozilla.org/docs/Web/HTML/Element/button\n if (elt.tagName === \"FORM\" || (getRawAttribute(elt, \"type\") === \"submit\" && hasAttribute(elt, \"form\"))) {\n initButtonTracking(elt)\n }\n\n var sseInfo = getAttributeValue(elt, 'hx-sse');\n if (sseInfo) {\n processSSEInfo(elt, nodeData, sseInfo);\n }\n\n var wsInfo = getAttributeValue(elt, 'hx-ws');\n if (wsInfo) {\n processWebSocketInfo(elt, nodeData, wsInfo);\n }\n triggerEvent(elt, \"htmx:afterProcessNode\");\n }\n }\n\n function processNode(elt) {\n elt = resolveTarget(elt);\n if (closest(elt, htmx.config.disableSelector)) {\n cleanUpElement(elt)\n return;\n }\n initNode(elt);\n forEach(findElementsToProcess(elt), function(child) { initNode(child) });\n // Because it happens second, the new way of adding onHandlers superseeds the old one\n // i.e. if there are any hx-on:eventName attributes, the hx-on attribute will be ignored\n forEach(findHxOnWildcardElements(elt), processHxOnWildcard);\n }\n\n //====================================================================\n // Event/Log Support\n //====================================================================\n\n function kebabEventName(str) {\n return str.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n }\n\n function makeEvent(eventName, detail) {\n var evt;\n if (window.CustomEvent && typeof window.CustomEvent === 'function') {\n evt = new CustomEvent(eventName, {bubbles: true, cancelable: true, detail: detail});\n } else {\n evt = getDocument().createEvent('CustomEvent');\n evt.initCustomEvent(eventName, true, true, detail);\n }\n return evt;\n }\n\n function triggerErrorEvent(elt, eventName, detail) {\n triggerEvent(elt, eventName, mergeObjects({error:eventName}, detail));\n }\n\n function ignoreEventForLogging(eventName) {\n return eventName === \"htmx:afterProcessNode\"\n }\n\n /**\n * `withExtensions` locates all active extensions for a provided element, then\n * executes the provided function using each of the active extensions. It should\n * be called internally at every extendable execution point in htmx.\n *\n * @param {HTMLElement} elt\n * @param {(extension:import(\"./htmx\").HtmxExtension) => void} toDo\n * @returns void\n */\n function withExtensions(elt, toDo) {\n forEach(getExtensions(elt), function(extension){\n try {\n toDo(extension);\n } catch (e) {\n logError(e);\n }\n });\n }\n\n function logError(msg) {\n if(console.error) {\n console.error(msg);\n } else if (console.log) {\n console.log(\"ERROR: \", msg);\n }\n }\n\n function triggerEvent(elt, eventName, detail) {\n elt = resolveTarget(elt);\n if (detail == null) {\n detail = {};\n }\n detail[\"elt\"] = elt;\n var event = makeEvent(eventName, detail);\n if (htmx.logger && !ignoreEventForLogging(eventName)) {\n htmx.logger(elt, eventName, detail);\n }\n if (detail.error) {\n logError(detail.error);\n triggerEvent(elt, \"htmx:error\", {errorInfo:detail})\n }\n var eventResult = elt.dispatchEvent(event);\n var kebabName = kebabEventName(eventName);\n if (eventResult && kebabName !== eventName) {\n var kebabedEvent = makeEvent(kebabName, event.detail);\n eventResult = eventResult && elt.dispatchEvent(kebabedEvent)\n }\n withExtensions(elt, function (extension) {\n eventResult = eventResult && (extension.onEvent(eventName, event) !== false && !event.defaultPrevented)\n });\n return eventResult;\n }\n\n //====================================================================\n // History Support\n //====================================================================\n var currentPathForHistory = location.pathname+location.search;\n\n function getHistoryElement() {\n var historyElt = getDocument().querySelector('[hx-history-elt],[data-hx-history-elt]');\n return historyElt || getDocument().body;\n }\n\n function saveToHistoryCache(url, content, title, scroll) {\n if (!canAccessLocalStorage()) {\n return;\n }\n\n if (htmx.config.historyCacheSize <= 0) {\n // make sure that an eventually already existing cache is purged\n localStorage.removeItem(\"htmx-history-cache\");\n return;\n }\n\n url = normalizePath(url);\n\n var historyCache = parseJSON(localStorage.getItem(\"htmx-history-cache\")) || [];\n for (var i = 0; i < historyCache.length; i++) {\n if (historyCache[i].url === url) {\n historyCache.splice(i, 1);\n break;\n }\n }\n var newHistoryItem = {url:url, content: content, title:title, scroll:scroll};\n triggerEvent(getDocument().body, \"htmx:historyItemCreated\", {item:newHistoryItem, cache: historyCache})\n historyCache.push(newHistoryItem)\n while (historyCache.length > htmx.config.historyCacheSize) {\n historyCache.shift();\n }\n while(historyCache.length > 0){\n try {\n localStorage.setItem(\"htmx-history-cache\", JSON.stringify(historyCache));\n break;\n } catch (e) {\n triggerErrorEvent(getDocument().body, \"htmx:historyCacheError\", {cause:e, cache: historyCache})\n historyCache.shift(); // shrink the cache and retry\n }\n }\n }\n\n function getCachedHistory(url) {\n if (!canAccessLocalStorage()) {\n return null;\n }\n\n url = normalizePath(url);\n\n var historyCache = parseJSON(localStorage.getItem(\"htmx-history-cache\")) || [];\n for (var i = 0; i < historyCache.length; i++) {\n if (historyCache[i].url === url) {\n return historyCache[i];\n }\n }\n return null;\n }\n\n function cleanInnerHtmlForHistory(elt) {\n var className = htmx.config.requestClass;\n var clone = elt.cloneNode(true);\n forEach(findAll(clone, \".\" + className), function(child){\n removeClassFromElement(child, className);\n });\n return clone.innerHTML;\n }\n\n function saveCurrentPageToHistory() {\n var elt = getHistoryElement();\n var path = currentPathForHistory || location.pathname+location.search;\n\n // Allow history snapshot feature to be disabled where hx-history=\"false\"\n // is present *anywhere* in the current document we're about to save,\n // so we can prevent privileged data entering the cache.\n // The page will still be reachable as a history entry, but htmx will fetch it\n // live from the server onpopstate rather than look in the localStorage cache\n var disableHistoryCache\n try {\n disableHistoryCache = getDocument().querySelector('[hx-history=\"false\" i],[data-hx-history=\"false\" i]')\n } catch (e) {\n // IE11: insensitive modifier not supported so fallback to case sensitive selector\n disableHistoryCache = getDocument().querySelector('[hx-history=\"false\"],[data-hx-history=\"false\"]')\n }\n if (!disableHistoryCache) {\n triggerEvent(getDocument().body, \"htmx:beforeHistorySave\", {path: path, historyElt: elt});\n saveToHistoryCache(path, cleanInnerHtmlForHistory(elt), getDocument().title, window.scrollY);\n }\n\n if (htmx.config.historyEnabled) history.replaceState({htmx: true}, getDocument().title, window.location.href);\n }\n\n function pushUrlIntoHistory(path) {\n // remove the cache buster parameter, if any\n if (htmx.config.getCacheBusterParam) {\n path = path.replace(/org\\.htmx\\.cache-buster=[^&]*&?/, '')\n if (endsWith(path, '&') || endsWith(path, \"?\")) {\n path = path.slice(0, -1);\n }\n }\n if(htmx.config.historyEnabled) {\n history.pushState({htmx:true}, \"\", path);\n }\n currentPathForHistory = path;\n }\n\n function replaceUrlInHistory(path) {\n if(htmx.config.historyEnabled) history.replaceState({htmx:true}, \"\", path);\n currentPathForHistory = path;\n }\n\n function settleImmediately(tasks) {\n forEach(tasks, function (task) {\n task.call();\n });\n }\n\n function loadHistoryFromServer(path) {\n var request = new XMLHttpRequest();\n var details = {path: path, xhr:request};\n triggerEvent(getDocument().body, \"htmx:historyCacheMiss\", details);\n request.open('GET', path, true);\n request.setRequestHeader(\"HX-Request\", \"true\");\n request.setRequestHeader(\"HX-History-Restore-Request\", \"true\");\n request.setRequestHeader(\"HX-Current-URL\", getDocument().location.href);\n request.onload = function () {\n if (this.status >= 200 && this.status < 400) {\n triggerEvent(getDocument().body, \"htmx:historyCacheMissLoad\", details);\n var fragment = makeFragment(this.response);\n // @ts-ignore\n fragment = fragment.querySelector('[hx-history-elt],[data-hx-history-elt]') || fragment;\n var historyElement = getHistoryElement();\n var settleInfo = makeSettleInfo(historyElement);\n var title = findTitle(this.response);\n if (title) {\n var titleElt = find(\"title\");\n if (titleElt) {\n titleElt.innerHTML = title;\n } else {\n window.document.title = title;\n }\n }\n // @ts-ignore\n swapInnerHTML(historyElement, fragment, settleInfo)\n settleImmediately(settleInfo.tasks);\n currentPathForHistory = path;\n triggerEvent(getDocument().body, \"htmx:historyRestore\", {path: path, cacheMiss:true, serverResponse:this.response});\n } else {\n triggerErrorEvent(getDocument().body, \"htmx:historyCacheMissLoadError\", details);\n }\n };\n request.send();\n }\n\n function restoreHistory(path) {\n saveCurrentPageToHistory();\n path = path || location.pathname+location.search;\n var cached = getCachedHistory(path);\n if (cached) {\n var fragment = makeFragment(cached.content);\n var historyElement = getHistoryElement();\n var settleInfo = makeSettleInfo(historyElement);\n swapInnerHTML(historyElement, fragment, settleInfo)\n settleImmediately(settleInfo.tasks);\n document.title = cached.title;\n setTimeout(function () {\n window.scrollTo(0, cached.scroll);\n }, 0); // next 'tick', so browser has time to render layout\n currentPathForHistory = path;\n triggerEvent(getDocument().body, \"htmx:historyRestore\", {path:path, item:cached});\n } else {\n if (htmx.config.refreshOnHistoryMiss) {\n\n // @ts-ignore: optional parameter in reload() function throws error\n window.location.reload(true);\n } else {\n loadHistoryFromServer(path);\n }\n }\n }\n\n function addRequestIndicatorClasses(elt) {\n var indicators = findAttributeTargets(elt, 'hx-indicator');\n if (indicators == null) {\n indicators = [elt];\n }\n forEach(indicators, function (ic) {\n var internalData = getInternalData(ic);\n internalData.requestCount = (internalData.requestCount || 0) + 1;\n ic.classList[\"add\"].call(ic.classList, htmx.config.requestClass);\n });\n return indicators;\n }\n\n function disableElements(elt) {\n var disabledElts = findAttributeTargets(elt, 'hx-disabled-elt');\n if (disabledElts == null) {\n disabledElts = [];\n }\n forEach(disabledElts, function (disabledElement) {\n var internalData = getInternalData(disabledElement);\n internalData.requestCount = (internalData.requestCount || 0) + 1;\n disabledElement.setAttribute(\"disabled\", \"\");\n });\n return disabledElts;\n }\n\n function removeRequestIndicators(indicators, disabled) {\n forEach(indicators, function (ic) {\n var internalData = getInternalData(ic);\n internalData.requestCount = (internalData.requestCount || 0) - 1;\n if (internalData.requestCount === 0) {\n ic.classList[\"remove\"].call(ic.classList, htmx.config.requestClass);\n }\n });\n forEach(disabled, function (disabledElement) {\n var internalData = getInternalData(disabledElement);\n internalData.requestCount = (internalData.requestCount || 0) - 1;\n if (internalData.requestCount === 0) {\n disabledElement.removeAttribute('disabled');\n }\n });\n }\n\n //====================================================================\n // Input Value Processing\n //====================================================================\n\n function haveSeenNode(processed, elt) {\n for (var i = 0; i < processed.length; i++) {\n var node = processed[i];\n if (node.isSameNode(elt)) {\n return true;\n }\n }\n return false;\n }\n\n function shouldInclude(elt) {\n if(elt.name === \"\" || elt.name == null || elt.disabled || closest(elt, \"fieldset[disabled]\")) {\n return false;\n }\n // ignore \"submitter\" types (see jQuery src/serialize.js)\n if (elt.type === \"button\" || elt.type === \"submit\" || elt.tagName === \"image\" || elt.tagName === \"reset\" || elt.tagName === \"file\" ) {\n return false;\n }\n if (elt.type === \"checkbox\" || elt.type === \"radio\" ) {\n return elt.checked;\n }\n return true;\n }\n\n function addValueToValues(name, value, values) {\n // This is a little ugly because both the current value of the named value in the form\n // and the new value could be arrays, so we have to handle all four cases :/\n if (name != null && value != null) {\n var current = values[name];\n if (current === undefined) {\n values[name] = value;\n } else if (Array.isArray(current)) {\n if (Array.isArray(value)) {\n values[name] = current.concat(value);\n } else {\n current.push(value);\n }\n } else {\n if (Array.isArray(value)) {\n values[name] = [current].concat(value);\n } else {\n values[name] = [current, value];\n }\n }\n }\n }\n\n function processInputValue(processed, values, errors, elt, validate) {\n if (elt == null || haveSeenNode(processed, elt)) {\n return;\n } else {\n processed.push(elt);\n }\n if (shouldInclude(elt)) {\n var name = getRawAttribute(elt,\"name\");\n var value = elt.value;\n if (elt.multiple && elt.tagName === \"SELECT\") {\n value = toArray(elt.querySelectorAll(\"option:checked\")).map(function (e) { return e.value });\n }\n // include file inputs\n if (elt.files) {\n value = toArray(elt.files);\n }\n addValueToValues(name, value, values);\n if (validate) {\n validateElement(elt, errors);\n }\n }\n if (matches(elt, 'form')) {\n var inputs = elt.elements;\n forEach(inputs, function(input) {\n processInputValue(processed, values, errors, input, validate);\n });\n }\n }\n\n function validateElement(element, errors) {\n if (element.willValidate) {\n triggerEvent(element, \"htmx:validation:validate\")\n if (!element.checkValidity()) {\n errors.push({elt: element, message:element.validationMessage, validity:element.validity});\n triggerEvent(element, \"htmx:validation:failed\", {message:element.validationMessage, validity:element.validity})\n }\n }\n }\n\n /**\n * @param {HTMLElement} elt\n * @param {string} verb\n */\n function getInputValues(elt, verb) {\n var processed = [];\n var values = {};\n var formValues = {};\n var errors = [];\n var internalData = getInternalData(elt);\n if (internalData.lastButtonClicked && !bodyContains(internalData.lastButtonClicked)) {\n internalData.lastButtonClicked = null\n }\n\n // only validate when form is directly submitted and novalidate or formnovalidate are not set\n // or if the element has an explicit hx-validate=\"true\" on it\n var validate = (matches(elt, 'form') && elt.noValidate !== true) || getAttributeValue(elt, \"hx-validate\") === \"true\";\n if (internalData.lastButtonClicked) {\n validate = validate && internalData.lastButtonClicked.formNoValidate !== true;\n }\n\n // for a non-GET include the closest form\n if (verb !== 'get') {\n processInputValue(processed, formValues, errors, closest(elt, 'form'), validate);\n }\n\n // include the element itself\n processInputValue(processed, values, errors, elt, validate);\n\n // if a button or submit was clicked last, include its value\n if (internalData.lastButtonClicked || elt.tagName === \"BUTTON\" ||\n (elt.tagName === \"INPUT\" && getRawAttribute(elt, \"type\") === \"submit\")) {\n var button = internalData.lastButtonClicked || elt\n var name = getRawAttribute(button, \"name\")\n addValueToValues(name, button.value, formValues)\n }\n\n // include any explicit includes\n var includes = findAttributeTargets(elt, \"hx-include\");\n forEach(includes, function(node) {\n processInputValue(processed, values, errors, node, validate);\n // if a non-form is included, include any input values within it\n if (!matches(node, 'form')) {\n forEach(node.querySelectorAll(INPUT_SELECTOR), function (descendant) {\n processInputValue(processed, values, errors, descendant, validate);\n })\n }\n });\n\n // form values take precedence, overriding the regular values\n values = mergeObjects(values, formValues);\n\n return {errors:errors, values:values};\n }\n\n function appendParam(returnStr, name, realValue) {\n if (returnStr !== \"\") {\n returnStr += \"&\";\n }\n if (String(realValue) === \"[object Object]\") {\n realValue = JSON.stringify(realValue);\n }\n var s = encodeURIComponent(realValue);\n returnStr += encodeURIComponent(name) + \"=\" + s;\n return returnStr;\n }\n\n function urlEncode(values) {\n var returnStr = \"\";\n for (var name in values) {\n if (values.hasOwnProperty(name)) {\n var value = values[name];\n if (Array.isArray(value)) {\n forEach(value, function(v) {\n returnStr = appendParam(returnStr, name, v);\n });\n } else {\n returnStr = appendParam(returnStr, name, value);\n }\n }\n }\n return returnStr;\n }\n\n function makeFormData(values) {\n var formData = new FormData();\n for (var name in values) {\n if (values.hasOwnProperty(name)) {\n var value = values[name];\n if (Array.isArray(value)) {\n forEach(value, function(v) {\n formData.append(name, v);\n });\n } else {\n formData.append(name, value);\n }\n }\n }\n return formData;\n }\n\n //====================================================================\n // Ajax\n //====================================================================\n\n /**\n * @param {HTMLElement} elt\n * @param {HTMLElement} target\n * @param {string} prompt\n * @returns {Object} // TODO: Define/Improve HtmxHeaderSpecification\n */\n function getHeaders(elt, target, prompt) {\n var headers = {\n \"HX-Request\" : \"true\",\n \"HX-Trigger\" : getRawAttribute(elt, \"id\"),\n \"HX-Trigger-Name\" : getRawAttribute(elt, \"name\"),\n \"HX-Target\" : getAttributeValue(target, \"id\"),\n \"HX-Current-URL\" : getDocument().location.href,\n }\n getValuesForElement(elt, \"hx-headers\", false, headers)\n if (prompt !== undefined) {\n headers[\"HX-Prompt\"] = prompt;\n }\n if (getInternalData(elt).boosted) {\n headers[\"HX-Boosted\"] = \"true\";\n }\n return headers;\n }\n\n /**\n * filterValues takes an object containing form input values\n * and returns a new object that only contains keys that are\n * specified by the closest \"hx-params\" attribute\n * @param {Object} inputValues\n * @param {HTMLElement} elt\n * @returns {Object}\n */\n function filterValues(inputValues, elt) {\n var paramsValue = getClosestAttributeValue(elt, \"hx-params\");\n if (paramsValue) {\n if (paramsValue === \"none\") {\n return {};\n } else if (paramsValue === \"*\") {\n return inputValues;\n } else if(paramsValue.indexOf(\"not \") === 0) {\n forEach(paramsValue.substr(4).split(\",\"), function (name) {\n name = name.trim();\n delete inputValues[name];\n });\n return inputValues;\n } else {\n var newValues = {}\n forEach(paramsValue.split(\",\"), function (name) {\n name = name.trim();\n newValues[name] = inputValues[name];\n });\n return newValues;\n }\n } else {\n return inputValues;\n }\n }\n\n function isAnchorLink(elt) {\n return getRawAttribute(elt, 'href') && getRawAttribute(elt, 'href').indexOf(\"#\") >=0\n }\n\n /**\n *\n * @param {HTMLElement} elt\n * @param {string} swapInfoOverride\n * @returns {import(\"./htmx\").HtmxSwapSpecification}\n */\n function getSwapSpecification(elt, swapInfoOverride) {\n var swapInfo = swapInfoOverride ? swapInfoOverride : getClosestAttributeValue(elt, \"hx-swap\");\n var swapSpec = {\n \"swapStyle\" : getInternalData(elt).boosted ? 'innerHTML' : htmx.config.defaultSwapStyle,\n \"swapDelay\" : htmx.config.defaultSwapDelay,\n \"settleDelay\" : htmx.config.defaultSettleDelay\n }\n if (htmx.config.scrollIntoViewOnBoost && getInternalData(elt).boosted && !isAnchorLink(elt)) {\n swapSpec[\"show\"] = \"top\"\n }\n if (swapInfo) {\n var split = splitOnWhitespace(swapInfo);\n if (split.length > 0) {\n for (var i = 0; i < split.length; i++) {\n var value = split[i];\n if (value.indexOf(\"swap:\") === 0) {\n swapSpec[\"swapDelay\"] = parseInterval(value.substr(5));\n } else if (value.indexOf(\"settle:\") === 0) {\n swapSpec[\"settleDelay\"] = parseInterval(value.substr(7));\n } else if (value.indexOf(\"transition:\") === 0) {\n swapSpec[\"transition\"] = value.substr(11) === \"true\";\n } else if (value.indexOf(\"ignoreTitle:\") === 0) {\n swapSpec[\"ignoreTitle\"] = value.substr(12) === \"true\";\n } else if (value.indexOf(\"scroll:\") === 0) {\n var scrollSpec = value.substr(7);\n var splitSpec = scrollSpec.split(\":\");\n var scrollVal = splitSpec.pop();\n var selectorVal = splitSpec.length > 0 ? splitSpec.join(\":\") : null;\n swapSpec[\"scroll\"] = scrollVal;\n swapSpec[\"scrollTarget\"] = selectorVal;\n } else if (value.indexOf(\"show:\") === 0) {\n var showSpec = value.substr(5);\n var splitSpec = showSpec.split(\":\");\n var showVal = splitSpec.pop();\n var selectorVal = splitSpec.length > 0 ? splitSpec.join(\":\") : null;\n swapSpec[\"show\"] = showVal;\n swapSpec[\"showTarget\"] = selectorVal;\n } else if (value.indexOf(\"focus-scroll:\") === 0) {\n var focusScrollVal = value.substr(\"focus-scroll:\".length);\n swapSpec[\"focusScroll\"] = focusScrollVal == \"true\";\n } else if (i == 0) {\n swapSpec[\"swapStyle\"] = value;\n } else {\n logError('Unknown modifier in hx-swap: ' + value);\n }\n }\n }\n }\n return swapSpec;\n }\n\n function usesFormData(elt) {\n return getClosestAttributeValue(elt, \"hx-encoding\") === \"multipart/form-data\" ||\n (matches(elt, \"form\") && getRawAttribute(elt, 'enctype') === \"multipart/form-data\");\n }\n\n function encodeParamsForBody(xhr, elt, filteredParameters) {\n var encodedParameters = null;\n withExtensions(elt, function (extension) {\n if (encodedParameters == null) {\n encodedParameters = extension.encodeParameters(xhr, filteredParameters, elt);\n }\n });\n if (encodedParameters != null) {\n return encodedParameters;\n } else {\n if (usesFormData(elt)) {\n return makeFormData(filteredParameters);\n } else {\n return urlEncode(filteredParameters);\n }\n }\n }\n\n /**\n *\n * @param {Element} target\n * @returns {import(\"./htmx\").HtmxSettleInfo}\n */\n function makeSettleInfo(target) {\n return {tasks: [], elts: [target]};\n }\n\n function updateScrollState(content, swapSpec) {\n var first = content[0];\n var last = content[content.length - 1];\n if (swapSpec.scroll) {\n var target = null;\n if (swapSpec.scrollTarget) {\n target = querySelectorExt(first, swapSpec.scrollTarget);\n }\n if (swapSpec.scroll === \"top\" && (first || target)) {\n target = target || first;\n target.scrollTop = 0;\n }\n if (swapSpec.scroll === \"bottom\" && (last || target)) {\n target = target || last;\n target.scrollTop = target.scrollHeight;\n }\n }\n if (swapSpec.show) {\n var target = null;\n if (swapSpec.showTarget) {\n var targetStr = swapSpec.showTarget;\n if (swapSpec.showTarget === \"window\") {\n targetStr = \"body\";\n }\n target = querySelectorExt(first, targetStr);\n }\n if (swapSpec.show === \"top\" && (first || target)) {\n target = target || first;\n target.scrollIntoView({block:'start', behavior: htmx.config.scrollBehavior});\n }\n if (swapSpec.show === \"bottom\" && (last || target)) {\n target = target || last;\n target.scrollIntoView({block:'end', behavior: htmx.config.scrollBehavior});\n }\n }\n }\n\n /**\n * @param {HTMLElement} elt\n * @param {string} attr\n * @param {boolean=} evalAsDefault\n * @param {Object=} values\n * @returns {Object}\n */\n function getValuesForElement(elt, attr, evalAsDefault, values) {\n if (values == null) {\n values = {};\n }\n if (elt == null) {\n return values;\n }\n var attributeValue = getAttributeValue(elt, attr);\n if (attributeValue) {\n var str = attributeValue.trim();\n var evaluateValue = evalAsDefault;\n if (str === \"unset\") {\n return null;\n }\n if (str.indexOf(\"javascript:\") === 0) {\n str = str.substr(11);\n evaluateValue = true;\n } else if (str.indexOf(\"js:\") === 0) {\n str = str.substr(3);\n evaluateValue = true;\n }\n if (str.indexOf('{') !== 0) {\n str = \"{\" + str + \"}\";\n }\n var varsValues;\n if (evaluateValue) {\n varsValues = maybeEval(elt,function () {return Function(\"return (\" + str + \")\")();}, {});\n } else {\n varsValues = parseJSON(str);\n }\n for (var key in varsValues) {\n if (varsValues.hasOwnProperty(key)) {\n if (values[key] == null) {\n values[key] = varsValues[key];\n }\n }\n }\n }\n return getValuesForElement(parentElt(elt), attr, evalAsDefault, values);\n }\n\n function maybeEval(elt, toEval, defaultVal) {\n if (htmx.config.allowEval) {\n return toEval();\n } else {\n triggerErrorEvent(elt, 'htmx:evalDisallowedError');\n return defaultVal;\n }\n }\n\n /**\n * @param {HTMLElement} elt\n * @param {*} expressionVars\n * @returns\n */\n function getHXVarsForElement(elt, expressionVars) {\n return getValuesForElement(elt, \"hx-vars\", true, expressionVars);\n }\n\n /**\n * @param {HTMLElement} elt\n * @param {*} expressionVars\n * @returns\n */\n function getHXValsForElement(elt, expressionVars) {\n return getValuesForElement(elt, \"hx-vals\", false, expressionVars);\n }\n\n /**\n * @param {HTMLElement} elt\n * @returns {Object}\n */\n function getExpressionVars(elt) {\n return mergeObjects(getHXVarsForElement(elt), getHXValsForElement(elt));\n }\n\n function safelySetHeaderValue(xhr, header, headerValue) {\n if (headerValue !== null) {\n try {\n xhr.setRequestHeader(header, headerValue);\n } catch (e) {\n // On an exception, try to set the header URI encoded instead\n xhr.setRequestHeader(header, encodeURIComponent(headerValue));\n xhr.setRequestHeader(header + \"-URI-AutoEncoded\", \"true\");\n }\n }\n }\n\n function getPathFromResponse(xhr) {\n // NB: IE11 does not support this stuff\n if (xhr.responseURL && typeof(URL) !== \"undefined\") {\n try {\n var url = new URL(xhr.responseURL);\n return url.pathname + url.search;\n } catch (e) {\n triggerErrorEvent(getDocument().body, \"htmx:badResponseUrl\", {url: xhr.responseURL});\n }\n }\n }\n\n function hasHeader(xhr, regexp) {\n return regexp.test(xhr.getAllResponseHeaders())\n }\n\n function ajaxHelper(verb, path, context) {\n verb = verb.toLowerCase();\n if (context) {\n if (context instanceof Element || isType(context, 'String')) {\n return issueAjaxRequest(verb, path, null, null, {\n targetOverride: resolveTarget(context),\n returnPromise: true\n });\n } else {\n return issueAjaxRequest(verb, path, resolveTarget(context.source), context.event,\n {\n handler : context.handler,\n headers : context.headers,\n values : context.values,\n targetOverride: resolveTarget(context.target),\n swapOverride: context.swap,\n select: context.select,\n returnPromise: true\n });\n }\n } else {\n return issueAjaxRequest(verb, path, null, null, {\n returnPromise: true\n });\n }\n }\n\n function hierarchyForElt(elt) {\n var arr = [];\n while (elt) {\n arr.push(elt);\n elt = elt.parentElement;\n }\n return arr;\n }\n\n function verifyPath(elt, path, requestConfig) {\n var sameHost\n var url\n if (typeof URL === \"function\") {\n url = new URL(path, document.location.href);\n var origin = document.location.origin;\n sameHost = origin === url.origin;\n } else {\n // IE11 doesn't support URL\n url = path\n sameHost = startsWith(path, document.location.origin)\n }\n\n if (htmx.config.selfRequestsOnly) {\n if (!sameHost) {\n return false;\n }\n }\n return triggerEvent(elt, \"htmx:validateUrl\", mergeObjects({url: url, sameHost: sameHost}, requestConfig));\n }\n\n function issueAjaxRequest(verb, path, elt, event, etc, confirmed) {\n var resolve = null;\n var reject = null;\n etc = etc != null ? etc : {};\n if(etc.returnPromise && typeof Promise !== \"undefined\"){\n var promise = new Promise(function (_resolve, _reject) {\n resolve = _resolve;\n reject = _reject;\n });\n }\n if(elt == null) {\n elt = getDocument().body;\n }\n var responseHandler = etc.handler || handleAjaxResponse;\n var select = etc.select || null;\n\n if (!bodyContains(elt)) {\n // do not issue requests for elements removed from the DOM\n maybeCall(resolve);\n return promise;\n }\n var target = etc.targetOverride || getTarget(elt);\n if (target == null || target == DUMMY_ELT) {\n triggerErrorEvent(elt, 'htmx:targetError', {target: getAttributeValue(elt, \"hx-target\")});\n maybeCall(reject);\n return promise;\n }\n\n var eltData = getInternalData(elt);\n var submitter = eltData.lastButtonClicked;\n\n if (submitter) {\n var buttonPath = getRawAttribute(submitter, \"formaction\");\n if (buttonPath != null) {\n path = buttonPath;\n }\n\n var buttonVerb = getRawAttribute(submitter, \"formmethod\")\n if (buttonVerb != null) {\n // ignore buttons with formmethod=\"dialog\"\n if (buttonVerb.toLowerCase() !== \"dialog\") {\n verb = buttonVerb;\n }\n }\n }\n\n var confirmQuestion = getClosestAttributeValue(elt, \"hx-confirm\");\n // allow event-based confirmation w/ a callback\n if (confirmed === undefined) {\n var issueRequest = function(skipConfirmation) {\n return issueAjaxRequest(verb, path, elt, event, etc, !!skipConfirmation);\n }\n var confirmDetails = {target: target, elt: elt, path: path, verb: verb, triggeringEvent: event, etc: etc, issueRequest: issueRequest, question: confirmQuestion};\n if (triggerEvent(elt, 'htmx:confirm', confirmDetails) === false) {\n maybeCall(resolve);\n return promise;\n }\n }\n\n var syncElt = elt;\n var syncStrategy = getClosestAttributeValue(elt, \"hx-sync\");\n var queueStrategy = null;\n var abortable = false;\n if (syncStrategy) {\n var syncStrings = syncStrategy.split(\":\");\n var selector = syncStrings[0].trim();\n if (selector === \"this\") {\n syncElt = findThisElement(elt, 'hx-sync');\n } else {\n syncElt = querySelectorExt(elt, selector);\n }\n // default to the drop strategy\n syncStrategy = (syncStrings[1] || 'drop').trim();\n eltData = getInternalData(syncElt);\n if (syncStrategy === \"drop\" && eltData.xhr && eltData.abortable !== true) {\n maybeCall(resolve);\n return promise;\n } else if (syncStrategy === \"abort\") {\n if (eltData.xhr) {\n maybeCall(resolve);\n return promise;\n } else {\n abortable = true;\n }\n } else if (syncStrategy === \"replace\") {\n triggerEvent(syncElt, 'htmx:abort'); // abort the current request and continue\n } else if (syncStrategy.indexOf(\"queue\") === 0) {\n var queueStrArray = syncStrategy.split(\" \");\n queueStrategy = (queueStrArray[1] || \"last\").trim();\n }\n }\n\n if (eltData.xhr) {\n if (eltData.abortable) {\n triggerEvent(syncElt, 'htmx:abort'); // abort the current request and continue\n } else {\n if(queueStrategy == null){\n if (event) {\n var eventData = getInternalData(event);\n if (eventData && eventData.triggerSpec && eventData.triggerSpec.queue) {\n queueStrategy = eventData.triggerSpec.queue;\n }\n }\n if (queueStrategy == null) {\n queueStrategy = \"last\";\n }\n }\n if (eltData.queuedRequests == null) {\n eltData.queuedRequests = [];\n }\n if (queueStrategy === \"first\" && eltData.queuedRequests.length === 0) {\n eltData.queuedRequests.push(function () {\n issueAjaxRequest(verb, path, elt, event, etc)\n });\n } else if (queueStrategy === \"all\") {\n eltData.queuedRequests.push(function () {\n issueAjaxRequest(verb, path, elt, event, etc)\n });\n } else if (queueStrategy === \"last\") {\n eltData.queuedRequests = []; // dump existing queue\n eltData.queuedRequests.push(function () {\n issueAjaxRequest(verb, path, elt, event, etc)\n });\n }\n maybeCall(resolve);\n return promise;\n }\n }\n\n var xhr = new XMLHttpRequest();\n eltData.xhr = xhr;\n eltData.abortable = abortable;\n var endRequestLock = function(){\n eltData.xhr = null;\n eltData.abortable = false;\n if (eltData.queuedRequests != null &&\n eltData.queuedRequests.length > 0) {\n var queuedRequest = eltData.queuedRequests.shift();\n queuedRequest();\n }\n }\n var promptQuestion = getClosestAttributeValue(elt, \"hx-prompt\");\n if (promptQuestion) {\n var promptResponse = prompt(promptQuestion);\n // prompt returns null if cancelled and empty string if accepted with no entry\n if (promptResponse === null ||\n !triggerEvent(elt, 'htmx:prompt', {prompt: promptResponse, target:target})) {\n maybeCall(resolve);\n endRequestLock();\n return promise;\n }\n }\n\n if (confirmQuestion && !confirmed) {\n if(!confirm(confirmQuestion)) {\n maybeCall(resolve);\n endRequestLock()\n return promise;\n }\n }\n\n\n var headers = getHeaders(elt, target, promptResponse);\n\n if (verb !== 'get' && !usesFormData(elt)) {\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\n }\n\n if (etc.headers) {\n headers = mergeObjects(headers, etc.headers);\n }\n var results = getInputValues(elt, verb);\n var errors = results.errors;\n var rawParameters = results.values;\n if (etc.values) {\n rawParameters = mergeObjects(rawParameters, etc.values);\n }\n var expressionVars = getExpressionVars(elt);\n var allParameters = mergeObjects(rawParameters, expressionVars);\n var filteredParameters = filterValues(allParameters, elt);\n\n if (htmx.config.getCacheBusterParam && verb === 'get') {\n filteredParameters['org.htmx.cache-buster'] = getRawAttribute(target, \"id\") || \"true\";\n }\n\n // behavior of anchors w/ empty href is to use the current URL\n if (path == null || path === \"\") {\n path = getDocument().location.href;\n }\n\n\n var requestAttrValues = getValuesForElement(elt, 'hx-request');\n\n var eltIsBoosted = getInternalData(elt).boosted;\n\n var useUrlParams = htmx.config.methodsThatUseUrlParams.indexOf(verb) >= 0\n\n var requestConfig = {\n boosted: eltIsBoosted,\n useUrlParams: useUrlParams,\n parameters: filteredParameters,\n unfilteredParameters: allParameters,\n headers:headers,\n target:target,\n verb:verb,\n errors:errors,\n withCredentials: etc.credentials || requestAttrValues.credentials || htmx.config.withCredentials,\n timeout: etc.timeout || requestAttrValues.timeout || htmx.config.timeout,\n path:path,\n triggeringEvent:event\n };\n\n if(!triggerEvent(elt, 'htmx:configRequest', requestConfig)){\n maybeCall(resolve);\n endRequestLock();\n return promise;\n }\n\n // copy out in case the object was overwritten\n path = requestConfig.path;\n verb = requestConfig.verb;\n headers = requestConfig.headers;\n filteredParameters = requestConfig.parameters;\n errors = requestConfig.errors;\n useUrlParams = requestConfig.useUrlParams;\n\n if(errors && errors.length > 0){\n triggerEvent(elt, 'htmx:validation:halted', requestConfig)\n maybeCall(resolve);\n endRequestLock();\n return promise;\n }\n\n var splitPath = path.split(\"#\");\n var pathNoAnchor = splitPath[0];\n var anchor = splitPath[1];\n\n var finalPath = path\n if (useUrlParams) {\n finalPath = pathNoAnchor;\n var values = Object.keys(filteredParameters).length !== 0;\n if (values) {\n if (finalPath.indexOf(\"?\") < 0) {\n finalPath += \"?\";\n } else {\n finalPath += \"&\";\n }\n finalPath += urlEncode(filteredParameters);\n if (anchor) {\n finalPath += \"#\" + anchor;\n }\n }\n }\n\n if (!verifyPath(elt, finalPath, requestConfig)) {\n triggerErrorEvent(elt, 'htmx:invalidPath', requestConfig)\n maybeCall(reject);\n return promise;\n };\n\n xhr.open(verb.toUpperCase(), finalPath, true);\n xhr.overrideMimeType(\"text/html\");\n xhr.withCredentials = requestConfig.withCredentials;\n xhr.timeout = requestConfig.timeout;\n\n // request headers\n if (requestAttrValues.noHeaders) {\n // ignore all headers\n } else {\n for (var header in headers) {\n if (headers.hasOwnProperty(header)) {\n var headerValue = headers[header];\n safelySetHeaderValue(xhr, header, headerValue);\n }\n }\n }\n\n var responseInfo = {\n xhr: xhr, target: target, requestConfig: requestConfig, etc: etc, boosted: eltIsBoosted, select: select,\n pathInfo: {\n requestPath: path,\n finalRequestPath: finalPath,\n anchor: anchor\n }\n };\n\n xhr.onload = function () {\n try {\n var hierarchy = hierarchyForElt(elt);\n responseInfo.pathInfo.responsePath = getPathFromResponse(xhr);\n responseHandler(elt, responseInfo);\n removeRequestIndicators(indicators, disableElts);\n triggerEvent(elt, 'htmx:afterRequest', responseInfo);\n triggerEvent(elt, 'htmx:afterOnLoad', responseInfo);\n // if the body no longer contains the element, trigger the event on the closest parent\n // remaining in the DOM\n if (!bodyContains(elt)) {\n var secondaryTriggerElt = null;\n while (hierarchy.length > 0 && secondaryTriggerElt == null) {\n var parentEltInHierarchy = hierarchy.shift();\n if (bodyContains(parentEltInHierarchy)) {\n secondaryTriggerElt = parentEltInHierarchy;\n }\n }\n if (secondaryTriggerElt) {\n triggerEvent(secondaryTriggerElt, 'htmx:afterRequest', responseInfo);\n triggerEvent(secondaryTriggerElt, 'htmx:afterOnLoad', responseInfo);\n }\n }\n maybeCall(resolve);\n endRequestLock();\n } catch (e) {\n triggerErrorEvent(elt, 'htmx:onLoadError', mergeObjects({error:e}, responseInfo));\n throw e;\n }\n }\n xhr.onerror = function () {\n removeRequestIndicators(indicators, disableElts);\n triggerErrorEvent(elt, 'htmx:afterRequest', responseInfo);\n triggerErrorEvent(elt, 'htmx:sendError', responseInfo);\n maybeCall(reject);\n endRequestLock();\n }\n xhr.onabort = function() {\n removeRequestIndicators(indicators, disableElts);\n triggerErrorEvent(elt, 'htmx:afterRequest', responseInfo);\n triggerErrorEvent(elt, 'htmx:sendAbort', responseInfo);\n maybeCall(reject);\n endRequestLock();\n }\n xhr.ontimeout = function() {\n removeRequestIndicators(indicators, disableElts);\n triggerErrorEvent(elt, 'htmx:afterRequest', responseInfo);\n triggerErrorEvent(elt, 'htmx:timeout', responseInfo);\n maybeCall(reject);\n endRequestLock();\n }\n if(!triggerEvent(elt, 'htmx:beforeRequest', responseInfo)){\n maybeCall(resolve);\n endRequestLock()\n return promise\n }\n var indicators = addRequestIndicatorClasses(elt);\n var disableElts = disableElements(elt);\n\n forEach(['loadstart', 'loadend', 'progress', 'abort'], function(eventName) {\n forEach([xhr, xhr.upload], function (target) {\n target.addEventListener(eventName, function(event){\n triggerEvent(elt, \"htmx:xhr:\" + eventName, {\n lengthComputable:event.lengthComputable,\n loaded:event.loaded,\n total:event.total\n });\n })\n });\n });\n triggerEvent(elt, 'htmx:beforeSend', responseInfo);\n var params = useUrlParams ? null : encodeParamsForBody(xhr, elt, filteredParameters)\n xhr.send(params);\n return promise;\n }\n\n function determineHistoryUpdates(elt, responseInfo) {\n\n var xhr = responseInfo.xhr;\n\n //===========================================\n // First consult response headers\n //===========================================\n var pathFromHeaders = null;\n var typeFromHeaders = null;\n if (hasHeader(xhr,/HX-Push:/i)) {\n pathFromHeaders = xhr.getResponseHeader(\"HX-Push\");\n typeFromHeaders = \"push\";\n } else if (hasHeader(xhr,/HX-Push-Url:/i)) {\n pathFromHeaders = xhr.getResponseHeader(\"HX-Push-Url\");\n typeFromHeaders = \"push\";\n } else if (hasHeader(xhr,/HX-Replace-Url:/i)) {\n pathFromHeaders = xhr.getResponseHeader(\"HX-Replace-Url\");\n typeFromHeaders = \"replace\";\n }\n\n // if there was a response header, that has priority\n if (pathFromHeaders) {\n if (pathFromHeaders === \"false\") {\n return {}\n } else {\n return {\n type: typeFromHeaders,\n path : pathFromHeaders\n }\n }\n }\n\n //===========================================\n // Next resolve via DOM values\n //===========================================\n var requestPath = responseInfo.pathInfo.finalRequestPath;\n var responsePath = responseInfo.pathInfo.responsePath;\n\n var pushUrl = getClosestAttributeValue(elt, \"hx-push-url\");\n var replaceUrl = getClosestAttributeValue(elt, \"hx-replace-url\");\n var elementIsBoosted = getInternalData(elt).boosted;\n\n var saveType = null;\n var path = null;\n\n if (pushUrl) {\n saveType = \"push\";\n path = pushUrl;\n } else if (replaceUrl) {\n saveType = \"replace\";\n path = replaceUrl;\n } else if (elementIsBoosted) {\n saveType = \"push\";\n path = responsePath || requestPath; // if there is no response path, go with the original request path\n }\n\n if (path) {\n // false indicates no push, return empty object\n if (path === \"false\") {\n return {};\n }\n\n // true indicates we want to follow wherever the server ended up sending us\n if (path === \"true\") {\n path = responsePath || requestPath; // if there is no response path, go with the original request path\n }\n\n // restore any anchor associated with the request\n if (responseInfo.pathInfo.anchor &&\n path.indexOf(\"#\") === -1) {\n path = path + \"#\" + responseInfo.pathInfo.anchor;\n }\n\n return {\n type:saveType,\n path: path\n }\n } else {\n return {};\n }\n }\n\n function handleAjaxResponse(elt, responseInfo) {\n var xhr = responseInfo.xhr;\n var target = responseInfo.target;\n var etc = responseInfo.etc;\n var requestConfig = responseInfo.requestConfig;\n var select = responseInfo.select;\n\n if (!triggerEvent(elt, 'htmx:beforeOnLoad', responseInfo)) return;\n\n if (hasHeader(xhr, /HX-Trigger:/i)) {\n handleTrigger(xhr, \"HX-Trigger\", elt);\n }\n\n if (hasHeader(xhr, /HX-Location:/i)) {\n saveCurrentPageToHistory();\n var redirectPath = xhr.getResponseHeader(\"HX-Location\");\n var swapSpec;\n if (redirectPath.indexOf(\"{\") === 0) {\n swapSpec = parseJSON(redirectPath);\n // what's the best way to throw an error if the user didn't include this\n redirectPath = swapSpec['path'];\n delete swapSpec['path'];\n }\n ajaxHelper('GET', redirectPath, swapSpec).then(function(){\n pushUrlIntoHistory(redirectPath);\n });\n return;\n }\n\n var shouldRefresh = hasHeader(xhr, /HX-Refresh:/i) && \"true\" === xhr.getResponseHeader(\"HX-Refresh\");\n\n if (hasHeader(xhr, /HX-Redirect:/i)) {\n location.href = xhr.getResponseHeader(\"HX-Redirect\");\n shouldRefresh && location.reload();\n return;\n }\n\n if (shouldRefresh) {\n location.reload();\n return;\n }\n\n if (hasHeader(xhr,/HX-Retarget:/i)) {\n if (xhr.getResponseHeader(\"HX-Retarget\") === \"this\") {\n responseInfo.target = elt;\n } else {\n responseInfo.target = querySelectorExt(elt, xhr.getResponseHeader(\"HX-Retarget\"));\n }\n }\n\n var historyUpdate = determineHistoryUpdates(elt, responseInfo);\n\n // by default htmx only swaps on 200 return codes and does not swap\n // on 204 'No Content'\n // this can be ovverriden by responding to the htmx:beforeSwap event and\n // overriding the detail.shouldSwap property\n var shouldSwap = xhr.status >= 200 && xhr.status < 400 && xhr.status !== 204;\n var serverResponse = xhr.response;\n var isError = xhr.status >= 400;\n var ignoreTitle = htmx.config.ignoreTitle\n var beforeSwapDetails = mergeObjects({shouldSwap: shouldSwap, serverResponse:serverResponse, isError:isError, ignoreTitle:ignoreTitle }, responseInfo);\n if (!triggerEvent(target, 'htmx:beforeSwap', beforeSwapDetails)) return;\n\n target = beforeSwapDetails.target; // allow re-targeting\n serverResponse = beforeSwapDetails.serverResponse; // allow updating content\n isError = beforeSwapDetails.isError; // allow updating error\n ignoreTitle = beforeSwapDetails.ignoreTitle; // allow updating ignoring title\n\n responseInfo.target = target; // Make updated target available to response events\n responseInfo.failed = isError; // Make failed property available to response events\n responseInfo.successful = !isError; // Make successful property available to response events\n\n if (beforeSwapDetails.shouldSwap) {\n if (xhr.status === 286) {\n cancelPolling(elt);\n }\n\n withExtensions(elt, function (extension) {\n serverResponse = extension.transformResponse(serverResponse, xhr, elt);\n });\n\n // Save current page if there will be a history update\n if (historyUpdate.type) {\n saveCurrentPageToHistory();\n }\n\n var swapOverride = etc.swapOverride;\n if (hasHeader(xhr,/HX-Reswap:/i)) {\n swapOverride = xhr.getResponseHeader(\"HX-Reswap\");\n }\n var swapSpec = getSwapSpecification(elt, swapOverride);\n\n if (swapSpec.hasOwnProperty('ignoreTitle')) {\n ignoreTitle = swapSpec.ignoreTitle;\n }\n\n target.classList.add(htmx.config.swappingClass);\n\n // optional transition API promise callbacks\n var settleResolve = null;\n var settleReject = null;\n\n var doSwap = function () {\n try {\n var activeElt = document.activeElement;\n var selectionInfo = {};\n try {\n selectionInfo = {\n elt: activeElt,\n // @ts-ignore\n start: activeElt ? activeElt.selectionStart : null,\n // @ts-ignore\n end: activeElt ? activeElt.selectionEnd : null\n };\n } catch (e) {\n // safari issue - see https://github.com/microsoft/playwright/issues/5894\n }\n\n var selectOverride;\n if (select) {\n selectOverride = select;\n }\n\n if (hasHeader(xhr, /HX-Reselect:/i)) {\n selectOverride = xhr.getResponseHeader(\"HX-Reselect\");\n }\n\n // if we need to save history, do so, before swapping so that relative resources have the correct base URL\n if (historyUpdate.type) {\n triggerEvent(getDocument().body, 'htmx:beforeHistoryUpdate', mergeObjects({ history: historyUpdate }, responseInfo));\n if (historyUpdate.type === \"push\") {\n pushUrlIntoHistory(historyUpdate.path);\n triggerEvent(getDocument().body, 'htmx:pushedIntoHistory', {path: historyUpdate.path});\n } else {\n replaceUrlInHistory(historyUpdate.path);\n triggerEvent(getDocument().body, 'htmx:replacedInHistory', {path: historyUpdate.path});\n }\n }\n\n var settleInfo = makeSettleInfo(target);\n selectAndSwap(swapSpec.swapStyle, target, elt, serverResponse, settleInfo, selectOverride);\n\n if (selectionInfo.elt &&\n !bodyContains(selectionInfo.elt) &&\n getRawAttribute(selectionInfo.elt, \"id\")) {\n var newActiveElt = document.getElementById(getRawAttribute(selectionInfo.elt, \"id\"));\n var focusOptions = { preventScroll: swapSpec.focusScroll !== undefined ? !swapSpec.focusScroll : !htmx.config.defaultFocusScroll };\n if (newActiveElt) {\n // @ts-ignore\n if (selectionInfo.start && newActiveElt.setSelectionRange) {\n // @ts-ignore\n try {\n newActiveElt.setSelectionRange(selectionInfo.start, selectionInfo.end);\n } catch (e) {\n // the setSelectionRange method is present on fields that don't support it, so just let this fail\n }\n }\n newActiveElt.focus(focusOptions);\n }\n }\n\n target.classList.remove(htmx.config.swappingClass);\n forEach(settleInfo.elts, function (elt) {\n if (elt.classList) {\n elt.classList.add(htmx.config.settlingClass);\n }\n triggerEvent(elt, 'htmx:afterSwap', responseInfo);\n });\n\n if (hasHeader(xhr, /HX-Trigger-After-Swap:/i)) {\n var finalElt = elt;\n if (!bodyContains(elt)) {\n finalElt = getDocument().body;\n }\n handleTrigger(xhr, \"HX-Trigger-After-Swap\", finalElt);\n }\n\n var doSettle = function () {\n forEach(settleInfo.tasks, function (task) {\n task.call();\n });\n forEach(settleInfo.elts, function (elt) {\n if (elt.classList) {\n elt.classList.remove(htmx.config.settlingClass);\n }\n triggerEvent(elt, 'htmx:afterSettle', responseInfo);\n });\n\n if (responseInfo.pathInfo.anchor) {\n var anchorTarget = getDocument().getElementById(responseInfo.pathInfo.anchor);\n if(anchorTarget) {\n anchorTarget.scrollIntoView({block:'start', behavior: \"auto\"});\n }\n }\n\n if(settleInfo.title && !ignoreTitle) {\n var titleElt = find(\"title\");\n if(titleElt) {\n titleElt.innerHTML = settleInfo.title;\n } else {\n window.document.title = settleInfo.title;\n }\n }\n\n updateScrollState(settleInfo.elts, swapSpec);\n\n if (hasHeader(xhr, /HX-Trigger-After-Settle:/i)) {\n var finalElt = elt;\n if (!bodyContains(elt)) {\n finalElt = getDocument().body;\n }\n handleTrigger(xhr, \"HX-Trigger-After-Settle\", finalElt);\n }\n maybeCall(settleResolve);\n }\n\n if (swapSpec.settleDelay > 0) {\n setTimeout(doSettle, swapSpec.settleDelay)\n } else {\n doSettle();\n }\n } catch (e) {\n triggerErrorEvent(elt, 'htmx:swapError', responseInfo);\n maybeCall(settleReject);\n throw e;\n }\n };\n\n var shouldTransition = htmx.config.globalViewTransitions\n if(swapSpec.hasOwnProperty('transition')){\n shouldTransition = swapSpec.transition;\n }\n\n if(shouldTransition &&\n triggerEvent(elt, 'htmx:beforeTransition', responseInfo) &&\n typeof Promise !== \"undefined\" && document.startViewTransition){\n var settlePromise = new Promise(function (_resolve, _reject) {\n settleResolve = _resolve;\n settleReject = _reject;\n });\n // wrap the original doSwap() in a call to startViewTransition()\n var innerDoSwap = doSwap;\n doSwap = function() {\n document.startViewTransition(function () {\n innerDoSwap();\n return settlePromise;\n });\n }\n }\n\n\n if (swapSpec.swapDelay > 0) {\n setTimeout(doSwap, swapSpec.swapDelay)\n } else {\n doSwap();\n }\n }\n if (isError) {\n triggerErrorEvent(elt, 'htmx:responseError', mergeObjects({error: \"Response Status Error Code \" + xhr.status + \" from \" + responseInfo.pathInfo.requestPath}, responseInfo));\n }\n }\n\n //====================================================================\n // Extensions API\n //====================================================================\n\n /** @type {Object} */\n var extensions = {};\n\n /**\n * extensionBase defines the default functions for all extensions.\n * @returns {import(\"./htmx\").HtmxExtension}\n */\n function extensionBase() {\n return {\n init: function(api) {return null;},\n onEvent : function(name, evt) {return true;},\n transformResponse : function(text, xhr, elt) {return text;},\n isInlineSwap : function(swapStyle) {return false;},\n handleSwap : function(swapStyle, target, fragment, settleInfo) {return false;},\n encodeParameters : function(xhr, parameters, elt) {return null;}\n }\n }\n\n /**\n * defineExtension initializes the extension and adds it to the htmx registry\n *\n * @param {string} name\n * @param {import(\"./htmx\").HtmxExtension} extension\n */\n function defineExtension(name, extension) {\n if(extension.init) {\n extension.init(internalAPI)\n }\n extensions[name] = mergeObjects(extensionBase(), extension);\n }\n\n /**\n * removeExtension removes an extension from the htmx registry\n *\n * @param {string} name\n */\n function removeExtension(name) {\n delete extensions[name];\n }\n\n /**\n * getExtensions searches up the DOM tree to return all extensions that can be applied to a given element\n *\n * @param {HTMLElement} elt\n * @param {import(\"./htmx\").HtmxExtension[]=} extensionsToReturn\n * @param {import(\"./htmx\").HtmxExtension[]=} extensionsToIgnore\n */\n function getExtensions(elt, extensionsToReturn, extensionsToIgnore) {\n\n if (elt == undefined) {\n return extensionsToReturn;\n }\n if (extensionsToReturn == undefined) {\n extensionsToReturn = [];\n }\n if (extensionsToIgnore == undefined) {\n extensionsToIgnore = [];\n }\n var extensionsForElement = getAttributeValue(elt, \"hx-ext\");\n if (extensionsForElement) {\n forEach(extensionsForElement.split(\",\"), function(extensionName){\n extensionName = extensionName.replace(/ /g, '');\n if (extensionName.slice(0, 7) == \"ignore:\") {\n extensionsToIgnore.push(extensionName.slice(7));\n return;\n }\n if (extensionsToIgnore.indexOf(extensionName) < 0) {\n var extension = extensions[extensionName];\n if (extension && extensionsToReturn.indexOf(extension) < 0) {\n extensionsToReturn.push(extension);\n }\n }\n });\n }\n return getExtensions(parentElt(elt), extensionsToReturn, extensionsToIgnore);\n }\n\n //====================================================================\n // Initialization\n //====================================================================\n var isReady = false\n getDocument().addEventListener('DOMContentLoaded', function() {\n isReady = true\n })\n\n /**\n * Execute a function now if DOMContentLoaded has fired, otherwise listen for it.\n *\n * This function uses isReady because there is no realiable way to ask the browswer whether\n * the DOMContentLoaded event has already been fired; there's a gap between DOMContentLoaded\n * firing and readystate=complete.\n */\n function ready(fn) {\n // Checking readyState here is a failsafe in case the htmx script tag entered the DOM by\n // some means other than the initial page load.\n if (isReady || getDocument().readyState === 'complete') {\n fn();\n } else {\n getDocument().addEventListener('DOMContentLoaded', fn);\n }\n }\n\n function insertIndicatorStyles() {\n if (htmx.config.includeIndicatorStyles !== false) {\n getDocument().head.insertAdjacentHTML(\"beforeend\",\n \"\");\n }\n }\n\n function getMetaConfig() {\n var element = getDocument().querySelector('meta[name=\"htmx-config\"]');\n if (element) {\n // @ts-ignore\n return parseJSON(element.content);\n } else {\n return null;\n }\n }\n\n function mergeMetaConfig() {\n var metaConfig = getMetaConfig();\n if (metaConfig) {\n htmx.config = mergeObjects(htmx.config , metaConfig)\n }\n }\n\n // initialize the document\n ready(function () {\n mergeMetaConfig();\n insertIndicatorStyles();\n var body = getDocument().body;\n processNode(body);\n var restoredElts = getDocument().querySelectorAll(\n \"[hx-trigger='restored'],[data-hx-trigger='restored']\"\n );\n body.addEventListener(\"htmx:abort\", function (evt) {\n var target = evt.target;\n var internalData = getInternalData(target);\n if (internalData && internalData.xhr) {\n internalData.xhr.abort();\n }\n });\n /** @type {(ev: PopStateEvent) => any} */\n const originalPopstate = window.onpopstate ? window.onpopstate.bind(window) : null;\n /** @type {(ev: PopStateEvent) => any} */\n window.onpopstate = function (event) {\n if (event.state && event.state.htmx) {\n restoreHistory();\n forEach(restoredElts, function(elt){\n triggerEvent(elt, 'htmx:restored', {\n 'document': getDocument(),\n 'triggerEvent': triggerEvent\n });\n });\n } else {\n if (originalPopstate) {\n originalPopstate(event);\n }\n }\n };\n setTimeout(function () {\n triggerEvent(body, 'htmx:load', {}); // give ready handlers a chance to load up before firing this event\n body = null; // kill reference for gc\n }, 0);\n })\n\n return htmx;\n }\n)()\n}));\n","(function(e,t){const r=t(e);if(typeof exports===\"object\"&&typeof exports[\"nodeName\"]!==\"string\"){module.exports=r}else{e[\"_hyperscript\"]=r;if(\"document\"in e)e[\"_hyperscript\"].browserInit()}})(typeof self!==\"undefined\"?self:this,(e=>{\"use strict\";const t={dynamicResolvers:[function(e,t){if(e===\"Fixed\"){return Number(t).toFixed()}else if(e.indexOf(\"Fixed:\")===0){let r=e.split(\":\")[1];return Number(t).toFixed(parseInt(r))}}],String:function(e){if(e.toString){return e.toString()}else{return\"\"+e}},Int:function(e){return parseInt(e)},Float:function(e){return parseFloat(e)},Number:function(e){return Number(e)},Date:function(e){return new Date(e)},Array:function(e){return Array.from(e)},JSON:function(e){return JSON.stringify(e)},Object:function(e){if(e instanceof String){e=e.toString()}if(typeof e===\"string\"){return JSON.parse(e)}else{return Object.assign({},e)}}};const r={attributes:\"_, script, data-script\",defaultTransition:\"all 500ms ease-in\",disableSelector:\"[disable-scripting], [data-disable-scripting]\",conversions:t};class n{static OP_TABLE={\"+\":\"PLUS\",\"-\":\"MINUS\",\"*\":\"MULTIPLY\",\"/\":\"DIVIDE\",\".\":\"PERIOD\",\"..\":\"ELLIPSIS\",\"\\\\\":\"BACKSLASH\",\":\":\"COLON\",\"%\":\"PERCENT\",\"|\":\"PIPE\",\"!\":\"EXCLAMATION\",\"?\":\"QUESTION\",\"#\":\"POUND\",\"&\":\"AMPERSAND\",$:\"DOLLAR\",\";\":\"SEMI\",\",\":\"COMMA\",\"(\":\"L_PAREN\",\")\":\"R_PAREN\",\"<\":\"L_ANG\",\">\":\"R_ANG\",\"<=\":\"LTE_ANG\",\">=\":\"GTE_ANG\",\"==\":\"EQ\",\"===\":\"EQQ\",\"!=\":\"NEQ\",\"!==\":\"NEQQ\",\"{\":\"L_BRACE\",\"}\":\"R_BRACE\",\"[\":\"L_BRACKET\",\"]\":\"R_BRACKET\",\"=\":\"EQUALS\"};static isValidCSSClassChar(e){return n.isAlpha(e)||n.isNumeric(e)||e===\"-\"||e===\"_\"||e===\":\"}static isValidCSSIDChar(e){return n.isAlpha(e)||n.isNumeric(e)||e===\"-\"||e===\"_\"||e===\":\"}static isWhitespace(e){return e===\" \"||e===\"\\t\"||n.isNewline(e)}static positionString(e){return\"[Line: \"+e.line+\", Column: \"+e.column+\"]\"}static isNewline(e){return e===\"\\r\"||e===\"\\n\"}static isNumeric(e){return e>=\"0\"&&e<=\"9\"}static isAlpha(e){return e>=\"a\"&&e<=\"z\"||e>=\"A\"&&e<=\"Z\"}static isIdentifierChar(e,t){return e===\"_\"||e===\"$\"}static isReservedChar(e){return e===\"`\"||e===\"^\"}static isValidSingleQuoteStringStart(e){if(e.length>0){var t=e[e.length-1];if(t.type===\"IDENTIFIER\"||t.type===\"CLASS_REF\"||t.type===\"ID_REF\"){return false}if(t.op&&(t.value===\">\"||t.value===\")\")){return false}}return true}static tokenize(e,t){var r=[];var a=e;var o=0;var s=0;var u=1;var l=\"\";var c=0;function f(){return t&&c===0}while(o=0){return this.consumeToken()}}requireToken(e,t){var r=this.matchToken(e,t);if(r){return r}else{this.raiseError(this,\"Expected '\"+e+\"' but found '\"+this.currentToken().value+\"'\")}}peekToken(e,t,r){return this.tokens[t]&&this.tokens[t].value===e&&this.tokens[t].type===r}matchToken(e,t){if(this.follows.indexOf(e)!==-1){return}t=t||\"IDENTIFIER\";if(this.currentToken()&&this.currentToken().value===e&&this.currentToken().type===t){return this.consumeToken()}}consumeToken(){var e=this.tokens.shift();this.consumed.push(e);this._lastConsumed=e;this.consumeWhitespace();return e}consumeUntil(e,t){var r=[];var n=this.token(0,true);while((t==null||n.type!==t)&&(e==null||n.value!==e)&&n.type!==\"EOF\"){var i=this.tokens.shift();this.consumed.push(i);r.push(n);n=this.token(0,true)}this.consumeWhitespace();return r}lastWhitespace(){if(this.consumed[this.consumed.length-1]&&this.consumed[this.consumed.length-1].type===\"WHITESPACE\"){return this.consumed[this.consumed.length-1].value}else{return\"\"}}consumeUntilWhitespace(){return this.consumeUntil(null,\"WHITESPACE\")}hasMore(){return this.tokens.length>0}token(e,t){var r;var n=0;do{if(!t){while(this.tokens[n]&&this.tokens[n].type===\"WHITESPACE\"){n++}}r=this.tokens[n];e--;n++}while(e>-1);if(r){return r}else{return{type:\"EOF\",value:\"<<>>\"}}}currentToken(){return this.token(0)}lastMatch(){return this._lastConsumed}static sourceFor=function(){return this.programSource.substring(this.startToken.start,this.endToken.end)};static lineFor=function(){return this.programSource.split(\"\\n\")[this.startToken.line-1]};follows=[];pushFollow(e){this.follows.push(e)}popFollow(){this.follows.pop()}clearFollows(){var e=this.follows;this.follows=[];return e}restoreFollows(e){this.follows=e}}class a{constructor(e){this.runtime=e;this.possessivesDisabled=false;this.addGrammarElement(\"feature\",(function(e,t,r){if(r.matchOpToken(\"(\")){var n=e.requireElement(\"feature\",r);r.requireOpToken(\")\");return n}var i=e.FEATURES[r.currentToken().value||\"\"];if(i){return i(e,t,r)}}));this.addGrammarElement(\"command\",(function(e,t,r){if(r.matchOpToken(\"(\")){const t=e.requireElement(\"command\",r);r.requireOpToken(\")\");return t}var n=e.COMMANDS[r.currentToken().value||\"\"];let i;if(n){i=n(e,t,r)}else if(r.currentToken().type===\"IDENTIFIER\"){i=e.parseElement(\"pseudoCommand\",r)}if(i){return e.parseElement(\"indirectStatement\",r,i)}return i}));this.addGrammarElement(\"commandList\",(function(e,t,r){var n=e.parseElement(\"command\",r);if(n){r.matchToken(\"then\");const t=e.parseElement(\"commandList\",r);if(t)n.next=t;return n}}));this.addGrammarElement(\"leaf\",(function(e,t,r){var n=e.parseAnyOf(e.LEAF_EXPRESSIONS,r);if(n==null){return e.parseElement(\"symbol\",r)}return n}));this.addGrammarElement(\"indirectExpression\",(function(e,t,r,n){for(var i=0;i{this.unifiedExec(e,t)})).catch((e=>{this.unifiedExec({op:function(){throw e}},t)}));return}else if(r===o.HALT){if(t.meta.finallyHandler&&!t.meta.handlingFinally){t.meta.handlingFinally=true;e=t.meta.finallyHandler}else{if(t.meta.onHalt){t.meta.onHalt()}if(t.meta.currentException){if(t.meta.reject){t.meta.reject(t.meta.currentException);return}else{throw t.meta.currentException}}else{return}}}else{e=r}}}unifiedEval(e,t){var r=[t];var n=false;var i=false;if(e.args){for(var a=0;a{r=this.wrapArrays(r);Promise.all(r).then((function(r){if(i){this.unwrapAsyncs(r)}try{var a=e.op.apply(e,r);t(a)}catch(e){n(e)}})).catch((function(e){n(e)}))}))}else{if(i){this.unwrapAsyncs(r)}return e.op.apply(e,r)}}_scriptAttrs=null;getScriptAttributes(){if(this._scriptAttrs==null){this._scriptAttrs=r.attributes.replace(/ /g,\"\").split(\",\")}return this._scriptAttrs}getScript(e){for(var t=0;t{this.initElement(e,e instanceof HTMLScriptElement&&e.type===\"text/hyperscript\"?document.body:e)}))}}initElement(e,t){if(e.closest&&e.closest(r.disableSelector)){return}var n=this.getInternalData(e);if(!n.initialized){var i=this.getScript(e);if(i){try{n.initialized=true;n.script=i;const r=this.lexer,s=this.parser;var a=r.tokenize(i);var o=s.parseHyperScript(a);if(!o)return;o.apply(t||e,e);setTimeout((()=>{this.triggerEvent(t||e,\"load\",{hyperscript:true})}),1)}catch(t){this.triggerEvent(e,\"exception\",{error:t});console.error(\"hyperscript errors were found on the following element:\",e,\"\\n\\n\",t.message,t.stack)}}}}internalDataMap=new WeakMap;getInternalData(e){var t=this.internalDataMap.get(e);if(typeof t===\"undefined\"){this.internalDataMap.set(e,t={})}return t}typeCheck(e,t,r){if(e==null&&r){return true}var n=Object.prototype.toString.call(e).slice(8,-1);return n===t}getElementScope(e){var t=e.meta&&e.meta.owner;if(t){var r=this.getInternalData(t);var n=\"elementScope\";if(e.meta.feature&&e.meta.feature.behavior){n=e.meta.feature.behavior+\"Scope\"}var i=c(r,n);return i}else{return{}}}isReservedWord(e){return[\"meta\",\"it\",\"result\",\"locals\",\"event\",\"target\",\"detail\",\"sender\",\"body\"].includes(e)}isHyperscriptContext(e){return e instanceof s}resolveSymbol(t,r,n){if(t===\"me\"||t===\"my\"||t===\"I\"){return r.me}if(t===\"it\"||t===\"its\"||t===\"result\"){return r.result}if(t===\"you\"||t===\"your\"||t===\"yourself\"){return r.you}else{if(n===\"global\"){return e[t]}else if(n===\"element\"){var i=this.getElementScope(r);return i[t]}else if(n===\"local\"){return r.locals[t]}else{if(r.meta&&r.meta.context){var a=r.meta.context[t];if(typeof a!==\"undefined\"){return a}}if(this.isHyperscriptContext(r)&&!this.isReservedWord(t)){var o=r.locals[t]}else{var o=r[t]}if(typeof o!==\"undefined\"){return o}else{var i=this.getElementScope(r);o=i[t];if(typeof o!==\"undefined\"){return o}else{return e[t]}}}}}setSymbol(t,r,n,i){if(n===\"global\"){e[t]=i}else if(n===\"element\"){var a=this.getElementScope(r);a[t]=i}else if(n===\"local\"){r.locals[t]=i}else{if(this.isHyperscriptContext(r)&&!this.isReservedWord(t)&&typeof r.locals[t]!==\"undefined\"){r.locals[t]=i}else{var a=this.getElementScope(r);var o=a[t];if(typeof o!==\"undefined\"){a[t]=i}else{if(this.isHyperscriptContext(r)&&!this.isReservedWord(t)){r.locals[t]=i}else{r[t]=i}}}}}findNext(e,t){if(e){if(e.resolveNext){return e.resolveNext(t)}else if(e.next){return e.next}else{return this.findNext(e.parent,t)}}}flatGet(e,t,r){if(e!=null){var n=r(e,t);if(typeof n!==\"undefined\"){return n}if(this.shouldAutoIterate(e)){var i=[];for(var a of e){var o=r(a,t);i.push(o)}return i}}}resolveProperty(e,t){return this.flatGet(e,t,((e,t)=>e[t]))}resolveAttribute(e,t){return this.flatGet(e,t,((e,t)=>e.getAttribute&&e.getAttribute(t)))}resolveStyle(e,t){return this.flatGet(e,t,((e,t)=>e.style&&e.style[t]))}resolveComputedStyle(e,t){return this.flatGet(e,t,((e,t)=>getComputedStyle(e).getPropertyValue(t)))}assignToNamespace(t,r,n,i){let a;if(typeof document!==\"undefined\"&&t===document.body){a=e}else{a=this.getHyperscriptFeatures(t)}var o;while((o=r.shift())!==undefined){var s=a[o];if(s==null){s={};a[o]=s}a=s}a[n]=i}getHyperTrace(e,t){var r=[];var n=e;while(n.meta.caller){n=n.meta.caller}if(n.meta.traceMap){return n.meta.traceMap.get(t,r)}}registerHyperTrace(e,t){var r=[];var n=null;while(e!=null){r.push(e);n=e;e=e.meta.caller}if(n.meta.traceMap==null){n.meta.traceMap=new Map}if(!n.meta.traceMap.get(t)){var i={trace:r,print:function(e){e=e||console.error;e(\"hypertrace /// \");var t=0;for(var n=0;n\",i.meta.feature.displayName.padEnd(t+2),\"-\",i.meta.owner)}}};n.meta.traceMap.set(t,i)}}escapeSelector(e){return e.replace(/:/g,(function(e){return\"\\\\\"+e}))}nullCheck(e,t){if(e==null){throw new Error(\"'\"+t.sourceFor()+\"' is null\")}}isEmpty(e){return e==undefined||e.length===0}doesExist(e){if(e==null){return false}if(this.shouldAutoIterate(e)){for(const t of e){return true}}return false}getRootNode(e){if(e&&e instanceof Node){var t=e.getRootNode();if(t instanceof Document||t instanceof ShadowRoot)return t}return document}getEventQueueFor(e,t){let r=this.getInternalData(e);var n=r.eventQueues;if(n==null){n=new Map;r.eventQueues=n}var i=n.get(t);if(i==null){i={queue:[],executing:false};n.set(t,i)}return i}hyperscriptUrl=\"document\"in e?document.currentScript.src:null}class s{constructor(t,r,n,i,a){this.meta={parser:a.parser,lexer:a.lexer,runtime:a,owner:t,feature:r,iterators:{},ctx:this};this.locals={};this.me=n,this.you=undefined;this.result=undefined;this.event=i;this.target=i?i.target:null;this.detail=i?i.detail:null;this.sender=i?i.detail?i.detail.sender:null:null;this.body=\"document\"in e?document.body:null;a.addFeatures(t,this)}}class u{constructor(e,t,r){this._css=e;this.relativeToElement=t;this.escape=r;this[l]=true}get css(){if(this.escape){return o.prototype.escapeSelector(this._css)}else{return this._css}}get className(){return this._css.substr(1)}get id(){return this.className()}contains(e){for(let t of this){if(t.contains(e)){return true}}return false}get length(){return this.selectMatches().length}[Symbol.iterator](){let e=this.selectMatches();return e[Symbol.iterator]()}selectMatches(){let e=o.prototype.getRootNode(this.relativeToElement).querySelectorAll(this.css);return e}}const l=Symbol();function c(e,t){var r=e[t];if(r){return r}else{var n={};e[t]=n;return n}}function f(e){try{return JSON.parse(e)}catch(e){m(e);return null}}function m(e){if(console.error){console.error(e)}else if(console.log){console.log(\"ERROR: \",e)}}function p(e,t){return new(e.bind.apply(e,[e].concat(t)))}function h(t){t.addLeafExpression(\"parenthesized\",(function(e,t,r){if(r.matchOpToken(\"(\")){var n=r.clearFollows();try{var i=e.requireElement(\"expression\",r)}finally{r.restoreFollows(n)}r.requireOpToken(\")\");return i}}));t.addLeafExpression(\"string\",(function(e,t,r){var i=r.matchTokenType(\"STRING\");if(!i)return;var a=i.value;var o;if(i.template){var s=n.tokenize(a,true);o=e.parseStringTemplate(s)}else{o=[]}return{type:\"string\",token:i,args:o,op:function(e){var t=\"\";for(var r=1;re instanceof Element))}get css(){let e=\"\",t=0;for(const r of this.templateParts){if(r instanceof Element){e+=\"[data-hs-query-id='\"+t+++\"']\"}else e+=r}return e}[Symbol.iterator](){this.elements.forEach(((e,t)=>e.dataset.hsQueryId=t));const e=super[Symbol.iterator]();this.elements.forEach((e=>e.removeAttribute(\"data-hs-query-id\")));return e}}t.addLeafExpression(\"queryRef\",(function(e,t,i){var a=i.matchOpToken(\"<\");if(!a)return;var o=i.consumeUntil(\"/\");i.requireOpToken(\"/\");i.requireOpToken(\">\");var s=o.map((function(e){if(e.type===\"STRING\"){return'\"'+e.value+'\"'}else{return e.value}})).join(\"\");var l,c,f;if(s.indexOf(\"$\")>=0){l=true;c=n.tokenize(s,true);f=e.parseStringTemplate(c)}return{type:\"queryRef\",css:s,args:f,op:function(e,...t){if(l){return new r(s,e.me,t)}else{return new u(s,e.me)}},evaluate:function(e){return t.unifiedEval(this,e)}}}));t.addLeafExpression(\"attributeRef\",(function(e,t,r){var n=r.matchTokenType(\"ATTRIBUTE_REF\");if(!n)return;if(!n.value)return;var i=n.value;if(i.indexOf(\"[\")===0){var a=i.substring(2,i.length-1)}else{var a=i.substring(1)}var o=\"[\"+a+\"]\";var s=a.split(\"=\");var u=s[0];var l=s[1];if(l){if(l.indexOf('\"')===0){l=l.substring(1,l.length-1)}}return{type:\"attributeRef\",name:u,css:o,value:l,op:function(e){var t=e.you||e.me;if(t){return t.getAttribute(u)}},evaluate:function(e){return t.unifiedEval(this,e)}}}));t.addLeafExpression(\"styleRef\",(function(e,t,r){var n=r.matchTokenType(\"STYLE_REF\");if(!n)return;if(!n.value)return;var i=n.value.substr(1);if(i.startsWith(\"computed-\")){i=i.substr(\"computed-\".length);return{type:\"computedStyleRef\",name:i,op:function(e){var r=e.you||e.me;if(r){return t.resolveComputedStyle(r,i)}},evaluate:function(e){return t.unifiedEval(this,e)}}}else{return{type:\"styleRef\",name:i,op:function(e){var r=e.you||e.me;if(r){return t.resolveStyle(r,i)}},evaluate:function(e){return t.unifiedEval(this,e)}}}}));t.addGrammarElement(\"objectKey\",(function(e,t,r){var n;if(n=r.matchTokenType(\"STRING\")){return{type:\"objectKey\",key:n.value,evaluate:function(){return n.value}}}else if(r.matchOpToken(\"[\")){var i=e.parseElement(\"expression\",r);r.requireOpToken(\"]\");return{type:\"objectKey\",expr:i,args:[i],op:function(e,t){return t},evaluate:function(e){return t.unifiedEval(this,e)}}}else{var a=\"\";do{n=r.matchTokenType(\"IDENTIFIER\")||r.matchOpToken(\"-\");if(n)a+=n.value}while(n);return{type:\"objectKey\",key:a,evaluate:function(){return a}}}}));t.addLeafExpression(\"objectLiteral\",(function(e,t,r){if(!r.matchOpToken(\"{\"))return;var n=[];var i=[];if(!r.matchOpToken(\"}\")){do{var a=e.requireElement(\"objectKey\",r);r.requireOpToken(\":\");var o=e.requireElement(\"expression\",r);i.push(o);n.push(a)}while(r.matchOpToken(\",\"));r.requireOpToken(\"}\")}return{type:\"objectLiteral\",args:[n,i],op:function(e,t,r){var n={};for(var i=0;i\");var a=e.requireElement(\"expression\",r);return{type:\"blockLiteral\",args:n,expr:a,evaluate:function(e){var t=function(){for(var t=0;t=0;a--){var o=i[a];if(o.compareDocumentPosition(e)===Node.DOCUMENT_POSITION_FOLLOWING){return o}}if(n){return i[i.length-1]}};var f=function(e,t,r,n){var i=[];o.prototype.forEach(t,(function(t){if(t.matches(r)||t===e){i.push(t)}}));for(var a=0;a\",\"<=\",\">=\",\"==\",\"===\",\"!=\",\"!==\");var a=i?i.value:null;var o=true;var s=false;if(a==null){if(r.matchToken(\"is\")||r.matchToken(\"am\")){if(r.matchToken(\"not\")){if(r.matchToken(\"in\")){a=\"not in\"}else if(r.matchToken(\"a\")){a=\"not a\";s=true}else if(r.matchToken(\"empty\")){a=\"not empty\";o=false}else{a=\"!=\"}}else if(r.matchToken(\"in\")){a=\"in\"}else if(r.matchToken(\"a\")){a=\"a\";s=true}else if(r.matchToken(\"empty\")){a=\"empty\";o=false}else if(r.matchToken(\"less\")){r.requireToken(\"than\");if(r.matchToken(\"or\")){r.requireToken(\"equal\");r.requireToken(\"to\");a=\"<=\"}else{a=\"<\"}}else if(r.matchToken(\"greater\")){r.requireToken(\"than\");if(r.matchToken(\"or\")){r.requireToken(\"equal\");r.requireToken(\"to\");a=\">=\"}else{a=\">\"}}else{a=\"==\"}}else if(r.matchToken(\"exist\")||r.matchToken(\"exists\")){a=\"exist\";o=false}else if(r.matchToken(\"matches\")||r.matchToken(\"match\")){a=\"match\"}else if(r.matchToken(\"contains\")||r.matchToken(\"contain\")){a=\"contain\"}else if(r.matchToken(\"includes\")||r.matchToken(\"include\")){a=\"include\"}else if(r.matchToken(\"do\")||r.matchToken(\"does\")){r.requireToken(\"not\");if(r.matchToken(\"matches\")||r.matchToken(\"match\")){a=\"not match\"}else if(r.matchToken(\"contains\")||r.matchToken(\"contain\")){a=\"not contain\"}else if(r.matchToken(\"exist\")||r.matchToken(\"exist\")){a=\"not exist\";o=false}else if(r.matchToken(\"include\")){a=\"not include\"}else{e.raiseParseError(r,\"Expected matches or contains\")}}}if(a){var u,l,c;if(s){u=r.requireTokenType(\"IDENTIFIER\");l=!r.matchOpToken(\"!\")}else if(o){c=e.requireElement(\"mathExpression\",r);if(a===\"match\"||a===\"not match\"){c=c.css?c.css:c}}var f=n;n={type:\"comparisonOperator\",operator:a,typeName:u,nullOk:l,lhs:n,rhs:c,args:[n,c],op:function(e,r,n){if(a===\"==\"){return r==n}else if(a===\"!=\"){return r!=n}if(a===\"match\"){return r!=null&&v(f,r,n)}if(a===\"not match\"){return r==null||!v(f,r,n)}if(a===\"in\"){return n!=null&&h(c,n,r)}if(a===\"not in\"){return n==null||!h(c,n,r)}if(a===\"contain\"){return r!=null&&h(f,r,n)}if(a===\"not contain\"){return r==null||!h(f,r,n)}if(a===\"include\"){return r!=null&&h(f,r,n)}if(a===\"not include\"){return r==null||!h(f,r,n)}if(a===\"===\"){return r===n}else if(a===\"!==\"){return r!==n}else if(a===\"<\"){return r\"){return r>n}else if(a===\"<=\"){return r<=n}else if(a===\">=\"){return r>=n}else if(a===\"empty\"){return t.isEmpty(r)}else if(a===\"not empty\"){return!t.isEmpty(r)}else if(a===\"exist\"){return t.doesExist(r)}else if(a===\"not exist\"){return!t.doesExist(r)}else if(a===\"a\"){return t.typeCheck(r,u.value,l)}else if(a===\"not a\"){return!t.typeCheck(r,u.value,l)}else{throw\"Unknown comparison : \"+a}},evaluate:function(e){return t.unifiedEval(this,e)}}}return n}));t.addGrammarElement(\"comparisonExpression\",(function(e,t,r){return e.parseAnyOf([\"comparisonOperator\",\"mathExpression\"],r)}));t.addGrammarElement(\"logicalOperator\",(function(e,t,r){var n=e.parseElement(\"comparisonExpression\",r);var i,a=null;i=r.matchToken(\"and\")||r.matchToken(\"or\");while(i){a=a||i;if(a.value!==i.value){e.raiseParseError(r,\"You must parenthesize logical operations with different operators\")}var o=e.requireElement(\"comparisonExpression\",r);const s=i.value;n={type:\"logicalOperator\",operator:s,lhs:n,rhs:o,args:[n,o],op:function(e,t,r){if(s===\"and\"){return t&&r}else{return t||r}},evaluate:function(e){return t.unifiedEval(this,e)}};i=r.matchToken(\"and\")||r.matchToken(\"or\")}return n}));t.addGrammarElement(\"logicalExpression\",(function(e,t,r){return e.parseAnyOf([\"logicalOperator\",\"mathExpression\"],r)}));t.addGrammarElement(\"asyncExpression\",(function(e,t,r){if(r.matchToken(\"async\")){var n=e.requireElement(\"logicalExpression\",r);var i={type:\"asyncExpression\",value:n,evaluate:function(e){return{asyncWrapper:true,value:this.value.evaluate(e)}}};return i}else{return e.parseElement(\"logicalExpression\",r)}}));t.addGrammarElement(\"expression\",(function(e,t,r){r.matchToken(\"the\");return e.parseElement(\"asyncExpression\",r)}));t.addGrammarElement(\"assignableExpression\",(function(e,t,r){r.matchToken(\"the\");var n=e.parseElement(\"primaryExpression\",r);if(n&&(n.type===\"symbol\"||n.type===\"ofExpression\"||n.type===\"propertyAccess\"||n.type===\"attributeRefAccess\"||n.type===\"attributeRef\"||n.type===\"styleRef\"||n.type===\"arrayIndex\"||n.type===\"possessive\")){return n}else{e.raiseParseError(r,\"A target expression must be writable. The expression type '\"+(n&&n.type)+\"' is not.\")}return n}));t.addGrammarElement(\"hyperscript\",(function(e,t,r){var n=[];if(r.hasMore()){while(e.featureStart(r.currentToken())||r.currentToken().value===\"(\"){var i=e.requireElement(\"feature\",r);n.push(i);r.matchToken(\"end\")}}return{type:\"hyperscript\",features:n,apply:function(e,t,r){for(const i of n){i.install(e,t,r)}}}}));var d=function(e){var t=[];if(e.token(0).value===\"(\"&&(e.token(1).value===\")\"||e.token(2).value===\",\"||e.token(2).value===\")\")){e.matchOpToken(\"(\");do{t.push(e.requireTokenType(\"IDENTIFIER\"))}while(e.matchOpToken(\",\"));e.requireOpToken(\")\")}return t};t.addFeature(\"on\",(function(e,t,r){if(!r.matchToken(\"on\"))return;var n=false;if(r.matchToken(\"every\")){n=true}var i=[];var a=null;do{var o=e.requireElement(\"eventName\",r,\"Expected event name\");var s=o.evaluate();if(a){a=a+\" or \"+s}else{a=\"on \"+s}var u=d(r);var l=null;if(r.matchOpToken(\"[\")){l=e.requireElement(\"expression\",r);r.requireOpToken(\"]\")}var c,f,m;if(r.currentToken().type===\"NUMBER\"){var p=r.consumeToken();if(!p.value)return;c=parseInt(p.value);if(r.matchToken(\"to\")){var h=r.consumeToken();if(!h.value)return;f=parseInt(h.value)}else if(r.matchToken(\"and\")){m=true;r.requireToken(\"on\")}}var v,E;if(s===\"intersection\"){v={};if(r.matchToken(\"with\")){v[\"with\"]=e.requireElement(\"expression\",r).evaluate()}if(r.matchToken(\"having\")){do{if(r.matchToken(\"margin\")){v[\"rootMargin\"]=e.requireElement(\"stringLike\",r).evaluate()}else if(r.matchToken(\"threshold\")){v[\"threshold\"]=e.requireElement(\"expression\",r).evaluate()}else{e.raiseParseError(r,\"Unknown intersection config specification\")}}while(r.matchToken(\"and\"))}}else if(s===\"mutation\"){E={};if(r.matchToken(\"of\")){do{if(r.matchToken(\"anything\")){E[\"attributes\"]=true;E[\"subtree\"]=true;E[\"characterData\"]=true;E[\"childList\"]=true}else if(r.matchToken(\"childList\")){E[\"childList\"]=true}else if(r.matchToken(\"attributes\")){E[\"attributes\"]=true;E[\"attributeOldValue\"]=true}else if(r.matchToken(\"subtree\")){E[\"subtree\"]=true}else if(r.matchToken(\"characterData\")){E[\"characterData\"]=true;E[\"characterDataOldValue\"]=true}else if(r.currentToken().type===\"ATTRIBUTE_REF\"){var T=r.consumeToken();if(E[\"attributeFilter\"]==null){E[\"attributeFilter\"]=[]}if(T.value.indexOf(\"@\")==0){E[\"attributeFilter\"].push(T.value.substring(1))}else{e.raiseParseError(r,\"Only shorthand attribute references are allowed here\")}}else{e.raiseParseError(r,\"Unknown mutation config specification\")}}while(r.matchToken(\"or\"))}else{E[\"attributes\"]=true;E[\"characterData\"]=true;E[\"childList\"]=true}}var y=null;var k=false;if(r.matchToken(\"from\")){if(r.matchToken(\"elsewhere\")){k=true}else{y=e.parseElement(\"expression\",r);if(!y){e.raiseParseError(r,'Expected either target value or \"elsewhere\".')}}}if(y===null&&k===false&&r.matchToken(\"elsewhere\")){k=true}if(r.matchToken(\"in\")){var x=e.parseElement(\"unaryExpression\",r)}if(r.matchToken(\"debounced\")){r.requireToken(\"at\");var g=e.requireElement(\"expression\",r);var b=g.evaluate({})}else if(r.matchToken(\"throttled\")){r.requireToken(\"at\");var g=e.requireElement(\"expression\",r);var w=g.evaluate({})}i.push({execCount:0,every:n,on:s,args:u,filter:l,from:y,inExpr:x,elsewhere:k,startCount:c,endCount:f,unbounded:m,debounceTime:b,throttleTime:w,mutationSpec:E,intersectionSpec:v,debounced:undefined,lastExec:undefined})}while(r.matchToken(\"or\"));var S=true;if(!n){if(r.matchToken(\"queue\")){if(r.matchToken(\"all\")){var q=true;var S=false}else if(r.matchToken(\"first\")){var N=true}else if(r.matchToken(\"none\")){var I=true}else{r.requireToken(\"last\")}}}var R=e.requireElement(\"commandList\",r);e.ensureTerminated(R);var C,A;if(r.matchToken(\"catch\")){C=r.requireTokenType(\"IDENTIFIER\").value;A=e.requireElement(\"commandList\",r);e.ensureTerminated(A)}if(r.matchToken(\"finally\")){var O=e.requireElement(\"commandList\",r);e.ensureTerminated(O)}var L={displayName:a,events:i,start:R,every:n,execCount:0,errorHandler:A,errorSymbol:C,execute:function(e){let r=t.getEventQueueFor(e.me,L);if(r.executing&&n===false){if(I||N&&r.queue.length>0){return}if(S){r.queue.length=0}r.queue.push(e);return}L.execCount++;r.executing=true;e.meta.onHalt=function(){r.executing=false;var e=r.queue.shift();if(e){setTimeout((function(){L.execute(e)}),1)}};e.meta.reject=function(r){console.error(r.message?r.message:r);var n=t.getHyperTrace(e,r);if(n){n.print()}t.triggerEvent(e.me,\"exception\",{error:r})};R.execute(e)},install:function(e,r){for(const r of L.events){var n;if(r.elsewhere){n=[document]}else if(r.from){n=r.from.evaluate(t.makeContext(e,L,e,null))}else{n=[e]}t.implicitLoop(n,(function(n){var i=r.on;if(n==null){console.warn(\"'%s' feature ignored because target does not exists:\",a,e);return}if(r.mutationSpec){i=\"hyperscript:mutation\";const e=new MutationObserver((function(e,r){if(!L.executing){t.triggerEvent(n,i,{mutationList:e,observer:r})}}));e.observe(n,r.mutationSpec)}if(r.intersectionSpec){i=\"hyperscript:insersection\";const e=new IntersectionObserver((function(r){for(const o of r){var a={observer:e};a=Object.assign(a,o);a[\"intersecting\"]=o.isIntersecting;t.triggerEvent(n,i,a)}}),r.intersectionSpec);e.observe(n)}var o=n.addEventListener||n.on;o.call(n,i,(function a(o){if(typeof Node!==\"undefined\"&&e instanceof Node&&n!==e&&!e.isConnected){n.removeEventListener(i,a);return}var s=t.makeContext(e,L,e,o);if(r.elsewhere&&e.contains(o.target)){return}if(r.from){s.result=n}for(const e of r.args){let t=s.event[e.value];if(t!==undefined){s.locals[e.value]=t}else if(\"detail\"in s.event){s.locals[e.value]=s.event[\"detail\"][e.value]}}s.meta.errorHandler=A;s.meta.errorSymbol=C;s.meta.finallyHandler=O;if(r.filter){var u=s.meta.context;s.meta.context=s.event;try{var l=r.filter.evaluate(s);if(l){}else{return}}finally{s.meta.context=u}}if(r.inExpr){var c=o.target;while(true){if(c.matches&&c.matches(r.inExpr.css)){s.result=c;break}else{c=c.parentElement;if(c==null){return}}}}r.execCount++;if(r.startCount){if(r.endCount){if(r.execCountr.endCount){return}}else if(r.unbounded){if(r.execCount{var a=false;for(const s of i){var o=n=>{e.result=n;if(s.args){for(const t of s.args){e.locals[t.value]=n[t.value]||(n.detail?n.detail[t.value]:null)}}if(!a){a=true;r(t.findNext(this,e))}};if(s.name){n.addEventListener(s.name,o,{once:true})}else if(s.time!=null){setTimeout(o,s.time,s.time)}}}))}};return n}else{var s;if(r.matchToken(\"a\")){r.requireToken(\"tick\");s=0}else{s=e.requireElement(\"expression\",r)}n={type:\"waitCmd\",time:s,args:[s],op:function(e,r){return new Promise((n=>{setTimeout((()=>{n(t.findNext(this,e))}),r)}))},execute:function(e){return t.unifiedExec(this,e)}};return n}}));t.addGrammarElement(\"dotOrColonPath\",(function(e,t,r){var n=r.matchTokenType(\"IDENTIFIER\");if(n){var i=[n.value];var a=r.matchOpToken(\".\")||r.matchOpToken(\":\");if(a){do{i.push(r.requireTokenType(\"IDENTIFIER\",\"NUMBER\").value)}while(r.matchOpToken(a.value))}return{type:\"dotOrColonPath\",path:i,evaluate:function(){return i.join(a?a.value:\"\")}}}}));t.addGrammarElement(\"eventName\",(function(e,t,r){var n;if(n=r.matchTokenType(\"STRING\")){return{evaluate:function(){return n.value}}}return e.parseElement(\"dotOrColonPath\",r)}));function E(e,t,r,n){var i=t.requireElement(\"eventName\",n);var a=t.parseElement(\"namedArgumentList\",n);if(e===\"send\"&&n.matchToken(\"to\")||e===\"trigger\"&&n.matchToken(\"on\")){var o=t.requireElement(\"expression\",n)}else{var o=t.requireElement(\"implicitMeTarget\",n)}var s={eventName:i,details:a,to:o,args:[o,i,a],op:function(e,t,n,i){r.nullCheck(t,o);r.forEach(t,(function(t){r.triggerEvent(t,n,i,e.me)}));return r.findNext(s,e)}};return s}t.addCommand(\"trigger\",(function(e,t,r){if(r.matchToken(\"trigger\")){return E(\"trigger\",e,t,r)}}));t.addCommand(\"send\",(function(e,t,r){if(r.matchToken(\"send\")){return E(\"send\",e,t,r)}}));var T=function(e,t,r,n){if(n){if(e.commandBoundary(r.currentToken())){e.raiseParseError(r,\"'return' commands must return a value. If you do not wish to return a value, use 'exit' instead.\")}else{var i=e.requireElement(\"expression\",r)}}var a={value:i,args:[i],op:function(e,r){var n=e.meta.resolve;e.meta.returned=true;e.meta.returnValue=r;if(n){if(r){n(r)}else{n()}}return t.HALT}};return a};t.addCommand(\"return\",(function(e,t,r){if(r.matchToken(\"return\")){return T(e,t,r,true)}}));t.addCommand(\"exit\",(function(e,t,r){if(r.matchToken(\"exit\")){return T(e,t,r,false)}}));t.addCommand(\"halt\",(function(e,t,r){if(r.matchToken(\"halt\")){if(r.matchToken(\"the\")){r.requireToken(\"event\");if(r.matchOpToken(\"'\")){r.requireToken(\"s\")}var n=true}if(r.matchToken(\"bubbling\")){var i=true}else if(r.matchToken(\"default\")){var a=true}var o=T(e,t,r,false);var s={keepExecuting:true,bubbling:i,haltDefault:a,exit:o,op:function(e){if(e.event){if(i){e.event.stopPropagation()}else if(a){e.event.preventDefault()}else{e.event.stopPropagation();e.event.preventDefault()}if(n){return t.findNext(this,e)}else{return o}}}};return s}}));t.addCommand(\"log\",(function(e,t,r){if(!r.matchToken(\"log\"))return;var n=[e.parseElement(\"expression\",r)];while(r.matchOpToken(\",\")){n.push(e.requireElement(\"expression\",r))}if(r.matchToken(\"with\")){var i=e.requireElement(\"expression\",r)}var a={exprs:n,withExpr:i,args:[i,n],op:function(e,r,n){if(r){r.apply(null,n)}else{console.log.apply(null,n)}return t.findNext(this,e)}};return a}));t.addCommand(\"throw\",(function(e,t,r){if(!r.matchToken(\"throw\"))return;var n=e.requireElement(\"expression\",r);var i={expr:n,args:[n],op:function(e,r){t.registerHyperTrace(e,r);throw r}};return i}));var y=function(e,t,r){var n=e.requireElement(\"expression\",r);var i={expr:n,args:[n],op:function(e,r){e.result=r;return t.findNext(i,e)}};return i};t.addCommand(\"call\",(function(e,t,r){if(!r.matchToken(\"call\"))return;var n=y(e,t,r);if(n.expr&&n.expr.type!==\"functionCall\"){e.raiseParseError(r,\"Must be a function invocation\")}return n}));t.addCommand(\"get\",(function(e,t,r){if(r.matchToken(\"get\")){return y(e,t,r)}}));t.addCommand(\"make\",(function(e,t,r){if(!r.matchToken(\"make\"))return;r.matchToken(\"a\")||r.matchToken(\"an\");var n=e.requireElement(\"expression\",r);var i=[];if(n.type!==\"queryRef\"&&r.matchToken(\"from\")){do{i.push(e.requireElement(\"expression\",r))}while(r.matchOpToken(\",\"))}if(r.matchToken(\"called\")){var a=e.requireElement(\"symbol\",r)}var o;if(n.type===\"queryRef\"){o={op:function(e){var r,i=\"div\",o,s=[];var u=/(?:(^|#|\\.)([^#\\. ]+))/g;while(r=u.exec(n.css)){if(r[1]===\"\")i=r[2].trim();else if(r[1]===\"#\")o=r[2].trim();else s.push(r[2].trim())}var l=document.createElement(i);if(o!==undefined)l.id=o;for(var c=0;c{if(!r.matchToken(\"pick\"))return;r.matchToken(\"the\");if(r.matchToken(\"item\")||r.matchToken(\"items\")||r.matchToken(\"character\")||r.matchToken(\"characters\")){const n=g(e,t,r);r.requireToken(\"from\");const i=e.requireElement(\"expression\",r);return{args:[i,n.from,n.to],op(e,r,i,a){if(n.toEnd)a=r.length;if(!n.includeStart)i++;if(n.includeEnd)a++;if(a==null||a==undefined)a=i+1;e.result=r.slice(i,a);return t.findNext(this,e)}}}if(r.matchToken(\"match\")){r.matchToken(\"of\");const n=e.parseElement(\"expression\",r);let i=\"\";if(r.matchOpToken(\"|\")){i=r.requireToken(\"identifier\").value}r.requireToken(\"from\");const a=e.parseElement(\"expression\",r);return{args:[a,n],op(e,r,n){e.result=new RegExp(n,i).exec(r);return t.findNext(this,e)}}}if(r.matchToken(\"matches\")){r.matchToken(\"of\");const n=e.parseElement(\"expression\",r);let i=\"gu\";if(r.matchOpToken(\"|\")){i=\"g\"+r.requireToken(\"identifier\").value.replace(\"g\",\"\")}console.log(\"flags\",i);r.requireToken(\"from\");const a=e.parseElement(\"expression\",r);return{args:[a,n],op(e,r,n){e.result=new w(n,i,r);return t.findNext(this,e)}}}}));t.addCommand(\"increment\",(function(e,t,r){if(!r.matchToken(\"increment\"))return;var n;var i=e.parseElement(\"assignableExpression\",r);if(r.matchToken(\"by\")){n=e.requireElement(\"expression\",r)}var a={type:\"implicitIncrementOp\",target:i,args:[i,n],op:function(e,t,r){t=t?parseFloat(t):0;r=n?parseFloat(r):1;var i=t+r;e.result=i;return i},evaluate:function(e){return t.unifiedEval(this,e)}};return k(e,t,r,i,a)}));t.addCommand(\"decrement\",(function(e,t,r){if(!r.matchToken(\"decrement\"))return;var n;var i=e.parseElement(\"assignableExpression\",r);if(r.matchToken(\"by\")){n=e.requireElement(\"expression\",r)}var a={type:\"implicitDecrementOp\",target:i,args:[i,n],op:function(e,t,r){t=t?parseFloat(t):0;r=n?parseFloat(r):1;var i=t-r;e.result=i;return i},evaluate:function(e){return t.unifiedEval(this,e)}};return k(e,t,r,i,a)}));function S(e,t){var r=\"text\";var n;e.matchToken(\"a\")||e.matchToken(\"an\");if(e.matchToken(\"json\")||e.matchToken(\"Object\")){r=\"json\"}else if(e.matchToken(\"response\")){r=\"response\"}else if(e.matchToken(\"html\")){r=\"html\"}else if(e.matchToken(\"text\")){}else{n=t.requireElement(\"dotOrColonPath\",e).evaluate()}return{type:r,conversion:n}}t.addCommand(\"fetch\",(function(e,t,r){if(!r.matchToken(\"fetch\"))return;var n=e.requireElement(\"stringLike\",r);if(r.matchToken(\"as\")){var i=S(r,e)}if(r.matchToken(\"with\")&&r.currentToken().value!==\"{\"){var a=e.parseElement(\"nakedNamedArgumentList\",r)}else{var a=e.parseElement(\"objectLiteral\",r)}if(i==null&&r.matchToken(\"as\")){i=S(r,e)}var o=i?i.type:\"text\";var s=i?i.conversion:null;var u={url:n,argExpressions:a,args:[n,a],op:function(e,r,n){var i=n||{};i[\"sender\"]=e.me;i[\"headers\"]=i[\"headers\"]||{};var a=new AbortController;let l=e.me.addEventListener(\"fetch:abort\",(function(){a.abort()}),{once:true});i[\"signal\"]=a.signal;t.triggerEvent(e.me,\"hyperscript:beforeFetch\",i);t.triggerEvent(e.me,\"fetch:beforeRequest\",i);n=i;var c=false;if(n.timeout){setTimeout((function(){if(!c){a.abort()}}),n.timeout)}return fetch(r,n).then((function(r){let n={response:r};t.triggerEvent(e.me,\"fetch:afterResponse\",n);r=n.response;if(o===\"response\"){e.result=r;t.triggerEvent(e.me,\"fetch:afterRequest\",{result:r});c=true;return t.findNext(u,e)}if(o===\"json\"){return r.json().then((function(r){e.result=r;t.triggerEvent(e.me,\"fetch:afterRequest\",{result:r});c=true;return t.findNext(u,e)}))}return r.text().then((function(r){if(s)r=t.convertValue(r,s);if(o===\"html\")r=t.convertValue(r,\"Fragment\");e.result=r;t.triggerEvent(e.me,\"fetch:afterRequest\",{result:r});c=true;return t.findNext(u,e)}))})).catch((function(r){t.triggerEvent(e.me,\"fetch:error\",{reason:r});throw r})).finally((function(){e.me.removeEventListener(\"fetch:abort\",l)}))}};return u}))}function v(e){e.addCommand(\"settle\",(function(e,t,r){if(r.matchToken(\"settle\")){if(!e.commandBoundary(r.currentToken())){var n=e.requireElement(\"expression\",r)}else{var n=e.requireElement(\"implicitMeTarget\",r)}var i={type:\"settleCmd\",args:[n],op:function(e,r){t.nullCheck(r,n);var a=null;var o=false;var s=false;var u=new Promise((function(e){a=e}));r.addEventListener(\"transitionstart\",(function(){s=true}),{once:true});setTimeout((function(){if(!s&&!o){a(t.findNext(i,e))}}),500);r.addEventListener(\"transitionend\",(function(){if(!o){a(t.findNext(i,e))}}),{once:true});return u},execute:function(e){return t.unifiedExec(this,e)}};return i}}));e.addCommand(\"add\",(function(e,t,r){if(r.matchToken(\"add\")){var n=e.parseElement(\"classRef\",r);var i=null;var a=null;if(n==null){i=e.parseElement(\"attributeRef\",r);if(i==null){a=e.parseElement(\"styleLiteral\",r);if(a==null){e.raiseParseError(r,\"Expected either a class reference or attribute expression\")}}}else{var o=[n];while(n=e.parseElement(\"classRef\",r)){o.push(n)}}if(r.matchToken(\"to\")){var s=e.requireElement(\"expression\",r)}else{var s=e.requireElement(\"implicitMeTarget\",r)}if(r.matchToken(\"when\")){if(a){e.raiseParseError(r,\"Only class and properties are supported with a when clause\")}var u=e.requireElement(\"expression\",r)}if(o){return{classRefs:o,to:s,args:[s,o],op:function(e,r,n){t.nullCheck(r,s);t.forEach(n,(function(n){t.implicitLoop(r,(function(r){if(u){e.result=r;let i=t.evaluateNoPromise(u,e);if(i){if(r instanceof Element)r.classList.add(n.className)}else{if(r instanceof Element)r.classList.remove(n.className)}e.result=null}else{if(r instanceof Element)r.classList.add(n.className)}}))}));return t.findNext(this,e)}}}else if(i){return{type:\"addCmd\",attributeRef:i,to:s,args:[s],op:function(e,r,n){t.nullCheck(r,s);t.implicitLoop(r,(function(r){if(u){e.result=r;let n=t.evaluateNoPromise(u,e);if(n){r.setAttribute(i.name,i.value)}else{r.removeAttribute(i.name)}e.result=null}else{r.setAttribute(i.name,i.value)}}));return t.findNext(this,e)},execute:function(e){return t.unifiedExec(this,e)}}}else{return{type:\"addCmd\",cssDeclaration:a,to:s,args:[s,a],op:function(e,r,n){t.nullCheck(r,s);t.implicitLoop(r,(function(e){e.style.cssText+=n}));return t.findNext(this,e)},execute:function(e){return t.unifiedExec(this,e)}}}}}));e.addGrammarElement(\"styleLiteral\",(function(e,t,r){if(!r.matchOpToken(\"{\"))return;var n=[\"\"];var i=[];while(r.hasMore()){if(r.matchOpToken(\"\\\\\")){r.consumeToken()}else if(r.matchOpToken(\"}\")){break}else if(r.matchToken(\"$\")){var a=r.matchOpToken(\"{\");var o=e.parseElement(\"expression\",r);if(a)r.requireOpToken(\"}\");i.push(o);n.push(\"\")}else{var s=r.consumeToken();n[n.length-1]+=r.source.substring(s.start,s.end)}n[n.length-1]+=r.lastWhitespace()}return{type:\"styleLiteral\",args:[i],op:function(e,t){var r=\"\";n.forEach((function(e,n){r+=e;if(n in t)r+=t[n]}));return r},evaluate:function(e){return t.unifiedEval(this,e)}}}));e.addCommand(\"remove\",(function(e,t,r){if(r.matchToken(\"remove\")){var n=e.parseElement(\"classRef\",r);var i=null;var a=null;if(n==null){i=e.parseElement(\"attributeRef\",r);if(i==null){a=e.parseElement(\"expression\",r);if(a==null){e.raiseParseError(r,\"Expected either a class reference, attribute expression or value expression\")}}}else{var o=[n];while(n=e.parseElement(\"classRef\",r)){o.push(n)}}if(r.matchToken(\"from\")){var s=e.requireElement(\"expression\",r)}else{if(a==null){var s=e.requireElement(\"implicitMeTarget\",r)}}if(a){return{elementExpr:a,from:s,args:[a,s],op:function(e,r,n){t.nullCheck(r,a);t.implicitLoop(r,(function(e){if(e.parentElement&&(n==null||n.contains(e))){e.parentElement.removeChild(e)}}));return t.findNext(this,e)}}}else{return{classRefs:o,attributeRef:i,elementExpr:a,from:s,args:[o,s],op:function(e,r,n){t.nullCheck(n,s);if(r){t.forEach(r,(function(e){t.implicitLoop(n,(function(t){t.classList.remove(e.className)}))}))}else{t.implicitLoop(n,(function(e){e.removeAttribute(i.name)}))}return t.findNext(this,e)}}}}}));e.addCommand(\"toggle\",(function(e,t,r){if(r.matchToken(\"toggle\")){r.matchAnyToken(\"the\",\"my\");if(r.currentToken().type===\"STYLE_REF\"){let t=r.consumeToken();var n=t.value.substr(1);var a=true;var o=i(e,r,n);if(r.matchToken(\"of\")){r.pushFollow(\"with\");try{var s=e.requireElement(\"expression\",r)}finally{r.popFollow()}}else{var s=e.requireElement(\"implicitMeTarget\",r)}}else if(r.matchToken(\"between\")){var u=true;var l=e.parseElement(\"classRef\",r);r.requireToken(\"and\");var c=e.requireElement(\"classRef\",r)}else{var l=e.parseElement(\"classRef\",r);var f=null;if(l==null){f=e.parseElement(\"attributeRef\",r);if(f==null){e.raiseParseError(r,\"Expected either a class reference or attribute expression\")}}else{var m=[l];while(l=e.parseElement(\"classRef\",r)){m.push(l)}}}if(a!==true){if(r.matchToken(\"on\")){var s=e.requireElement(\"expression\",r)}else{var s=e.requireElement(\"implicitMeTarget\",r)}}if(r.matchToken(\"for\")){var p=e.requireElement(\"expression\",r)}else if(r.matchToken(\"until\")){var h=e.requireElement(\"dotOrColonPath\",r,\"Expected event name\");if(r.matchToken(\"from\")){var v=e.requireElement(\"expression\",r)}}var d={classRef:l,classRef2:c,classRefs:m,attributeRef:f,on:s,time:p,evt:h,from:v,toggle:function(e,r,n,i){t.nullCheck(e,s);if(a){t.implicitLoop(e,(function(e){o(\"toggle\",e)}))}else if(u){t.implicitLoop(e,(function(e){if(e.classList.contains(r.className)){e.classList.remove(r.className);e.classList.add(n.className)}else{e.classList.add(r.className);e.classList.remove(n.className)}}))}else if(i){t.forEach(i,(function(r){t.implicitLoop(e,(function(e){e.classList.toggle(r.className)}))}))}else{t.forEach(e,(function(e){if(e.hasAttribute(f.name)){e.removeAttribute(f.name)}else{e.setAttribute(f.name,f.value)}}))}},args:[s,p,h,v,l,c,m],op:function(e,r,n,i,a,o,s,u){if(n){return new Promise((function(i){d.toggle(r,o,s,u);setTimeout((function(){d.toggle(r,o,s,u);i(t.findNext(d,e))}),n)}))}else if(i){return new Promise((function(n){var l=a||e.me;l.addEventListener(i,(function(){d.toggle(r,o,s,u);n(t.findNext(d,e))}),{once:true});d.toggle(r,o,s,u)}))}else{this.toggle(r,o,s,u);return t.findNext(d,e)}}};return d}}));var t={display:function(r,n,i){if(i){n.style.display=i}else if(r===\"toggle\"){if(getComputedStyle(n).display===\"none\"){t.display(\"show\",n,i)}else{t.display(\"hide\",n,i)}}else if(r===\"hide\"){const t=e.runtime.getInternalData(n);if(t.originalDisplay==null){t.originalDisplay=n.style.display}n.style.display=\"none\"}else{const t=e.runtime.getInternalData(n);if(t.originalDisplay&&t.originalDisplay!==\"none\"){n.style.display=t.originalDisplay}else{n.style.removeProperty(\"display\")}}},visibility:function(e,r,n){if(n){r.style.visibility=n}else if(e===\"toggle\"){if(getComputedStyle(r).visibility===\"hidden\"){t.visibility(\"show\",r,n)}else{t.visibility(\"hide\",r,n)}}else if(e===\"hide\"){r.style.visibility=\"hidden\"}else{r.style.visibility=\"visible\"}},opacity:function(e,r,n){if(n){r.style.opacity=n}else if(e===\"toggle\"){if(getComputedStyle(r).opacity===\"0\"){t.opacity(\"show\",r,n)}else{t.opacity(\"hide\",r,n)}}else if(e===\"hide\"){r.style.opacity=\"0\"}else{r.style.opacity=\"1\"}}};var n=function(e,t,r){var n;var i=r.currentToken();if(i.value===\"when\"||i.value===\"with\"||e.commandBoundary(i)){n=e.parseElement(\"implicitMeTarget\",r)}else{n=e.parseElement(\"expression\",r)}return n};var i=function(e,n,i){var a=r.defaultHideShowStrategy;var o=t;if(r.hideShowStrategies){o=Object.assign(o,r.hideShowStrategies)}i=i||a||\"display\";var s=o[i];if(s==null){e.raiseParseError(n,\"Unknown show/hide strategy : \"+i)}return s};e.addCommand(\"hide\",(function(e,t,r){if(r.matchToken(\"hide\")){var a=n(e,t,r);var o=null;if(r.matchToken(\"with\")){o=r.requireTokenType(\"IDENTIFIER\",\"STYLE_REF\").value;if(o.indexOf(\"*\")===0){o=o.substr(1)}}var s=i(e,r,o);return{target:a,args:[a],op:function(e,r){t.nullCheck(r,a);t.implicitLoop(r,(function(e){s(\"hide\",e)}));return t.findNext(this,e)}}}}));e.addCommand(\"show\",(function(e,t,r){if(r.matchToken(\"show\")){var a=n(e,t,r);var o=null;if(r.matchToken(\"with\")){o=r.requireTokenType(\"IDENTIFIER\",\"STYLE_REF\").value;if(o.indexOf(\"*\")===0){o=o.substr(1)}}var s=null;if(r.matchOpToken(\":\")){var u=r.consumeUntilWhitespace();r.matchTokenType(\"WHITESPACE\");s=u.map((function(e){return e.value})).join(\"\")}if(r.matchToken(\"when\")){var l=e.requireElement(\"expression\",r)}var c=i(e,r,o);return{target:a,when:l,args:[a],op:function(e,r){t.nullCheck(r,a);t.implicitLoop(r,(function(r){if(l){e.result=r;let n=t.evaluateNoPromise(l,e);if(n){c(\"show\",r,s)}else{c(\"hide\",r)}e.result=null}else{c(\"show\",r,s)}}));return t.findNext(this,e)}}}}));e.addCommand(\"take\",(function(e,t,r){if(r.matchToken(\"take\")){var n=e.requireElement(\"classRef\",r);if(r.matchToken(\"from\")){var i=e.requireElement(\"expression\",r)}else{var i=n}if(r.matchToken(\"for\")){var a=e.requireElement(\"expression\",r)}else{var a=e.requireElement(\"implicitMeTarget\",r)}var o={classRef:n,from:i,forElt:a,args:[n,i,a],op:function(e,r,n,o){t.nullCheck(n,i);t.nullCheck(o,a);var s=r.className;t.implicitLoop(n,(function(e){e.classList.remove(s)}));t.implicitLoop(o,(function(e){e.classList.add(s)}));return t.findNext(this,e)}};return o}}));function a(t,r,n,i){if(n!=null){var a=t.resolveSymbol(n,r)}else{var a=r}if(a instanceof Element||a instanceof HTMLDocument){while(a.firstChild)a.removeChild(a.firstChild);a.append(e.runtime.convertValue(i,\"Fragment\"));t.processNode(a)}else{if(n!=null){t.setSymbol(n,r,null,i)}else{throw\"Don't know how to put a value into \"+typeof r}}}e.addCommand(\"put\",(function(e,t,r){if(r.matchToken(\"put\")){var n=e.requireElement(\"expression\",r);var i=r.matchAnyToken(\"into\",\"before\",\"after\");if(i==null&&r.matchToken(\"at\")){r.matchToken(\"the\");i=r.matchAnyToken(\"start\",\"end\");r.requireToken(\"of\")}if(i==null){e.raiseParseError(r,\"Expected one of 'into', 'before', 'at start of', 'at end of', 'after'\")}var o=e.requireElement(\"expression\",r);var s=i.value;var u=false;var l=false;var c=null;var f=null;if(o.type===\"arrayIndex\"&&s===\"into\"){u=true;f=o.prop;c=o.root}else if(o.prop&&o.root&&s===\"into\"){f=o.prop.value;c=o.root}else if(o.type===\"symbol\"&&s===\"into\"){l=true;f=o.name}else if(o.type===\"attributeRef\"&&s===\"into\"){var m=true;f=o.name;c=e.requireElement(\"implicitMeTarget\",r)}else if(o.type===\"styleRef\"&&s===\"into\"){var p=true;f=o.name;c=e.requireElement(\"implicitMeTarget\",r)}else if(o.attribute&&s===\"into\"){var m=o.attribute.type===\"attributeRef\";var p=o.attribute.type===\"styleRef\";f=o.attribute.name;c=o.root}else{c=o}var h={target:o,operation:s,symbolWrite:l,value:n,args:[c,f,n],op:function(e,r,n,i){if(l){a(t,e,n,i)}else{t.nullCheck(r,c);if(s===\"into\"){if(m){t.implicitLoop(r,(function(e){e.setAttribute(n,i)}))}else if(p){t.implicitLoop(r,(function(e){e.style[n]=i}))}else if(u){r[n]=i}else{t.implicitLoop(r,(function(e){a(t,e,n,i)}))}}else{var o=s===\"before\"?Element.prototype.before:s===\"after\"?Element.prototype.after:s===\"start\"?Element.prototype.prepend:s===\"end\"?Element.prototype.append:Element.prototype.append;t.implicitLoop(r,(function(e){o.call(e,i instanceof Node?i:t.convertValue(i,\"Fragment\"));if(e.parentElement){t.processNode(e.parentElement)}else{t.processNode(e)}}))}}return t.findNext(this,e)}};return h}}));function o(e,t,r){var n;if(r.matchToken(\"the\")||r.matchToken(\"element\")||r.matchToken(\"elements\")||r.currentToken().type===\"CLASS_REF\"||r.currentToken().type===\"ID_REF\"||r.currentToken().op&&r.currentToken().value===\"<\"){e.possessivesDisabled=true;try{n=e.parseElement(\"expression\",r)}finally{delete e.possessivesDisabled}if(r.matchOpToken(\"'\")){r.requireToken(\"s\")}}else if(r.currentToken().type===\"IDENTIFIER\"&&r.currentToken().value===\"its\"){var i=r.matchToken(\"its\");n={type:\"pseudopossessiveIts\",token:i,name:i.value,evaluate:function(e){return t.resolveSymbol(\"it\",e)}}}else{r.matchToken(\"my\")||r.matchToken(\"me\");n=e.parseElement(\"implicitMeTarget\",r)}return n}e.addCommand(\"transition\",(function(e,t,n){if(n.matchToken(\"transition\")){var i=o(e,t,n);var a=[];var s=[];var u=[];var l=n.currentToken();while(!e.commandBoundary(l)&&l.value!==\"over\"&&l.value!==\"using\"){if(n.currentToken().type===\"STYLE_REF\"){let e=n.consumeToken();let t=e.value.substr(1);a.push({type:\"styleRefValue\",evaluate:function(){return t}})}else{a.push(e.requireElement(\"stringLike\",n))}if(n.matchToken(\"from\")){s.push(e.requireElement(\"expression\",n))}else{s.push(null)}n.requireToken(\"to\");if(n.matchToken(\"initial\")){u.push({type:\"initial_literal\",evaluate:function(){return\"initial\"}})}else{u.push(e.requireElement(\"expression\",n))}l=n.currentToken()}if(n.matchToken(\"over\")){var c=e.requireElement(\"expression\",n)}else if(n.matchToken(\"using\")){var f=e.requireElement(\"expression\",n)}var m={to:u,args:[i,a,s,u,f,c],op:function(e,n,a,o,s,u,l){t.nullCheck(n,i);var c=[];t.implicitLoop(n,(function(e){var n=new Promise((function(n,i){var c=e.style.transition;if(l){e.style.transition=\"all \"+l+\"ms ease-in\"}else if(u){e.style.transition=u}else{e.style.transition=r.defaultTransition}var f=t.getInternalData(e);var m=getComputedStyle(e);var p={};for(var h=0;he.forEach((e=>x(e))))).then((()=>n((function(){a();d.processNode(document.documentElement);e.document.addEventListener(\"htmx:load\",(function(e){d.processNode(e.detail.elt)}))}))));function n(e){if(document.readyState!==\"loading\"){setTimeout(e)}else{document.addEventListener(\"DOMContentLoaded\",e)}}function i(){var e=document.querySelector('meta[name=\"htmx-config\"]');if(e){return f(e.content)}else{return null}}function a(){var e=i();if(e){Object.assign(r,e)}}}const x=Object.assign(y,{config:r,use(e){e(x)},internals:{lexer:E,parser:T,runtime:d,Lexer:n,Tokens:i,Parser:a,Runtime:o},ElementCollection:u,addFeature:T.addFeature.bind(T),addCommand:T.addCommand.bind(T),addLeafExpression:T.addLeafExpression.bind(T),addIndirectExpression:T.addIndirectExpression.bind(T),evaluate:d.evaluate.bind(d),parse:d.parse.bind(d),processNode:d.processNode.bind(d),browserInit:k});return x}));\n","(function(window, factory) {\n\tvar lazySizes = factory(window, window.document, Date);\n\twindow.lazySizes = lazySizes;\n\tif(typeof module == 'object' && module.exports){\n\t\tmodule.exports = lazySizes;\n\t}\n}(typeof window != 'undefined' ?\n window : {}, \n/**\n * import(\"./types/global\")\n * @typedef { import(\"./types/lazysizes-config\").LazySizesConfigPartial } LazySizesConfigPartial\n */\nfunction l(window, document, Date) { // Pass in the window Date function also for SSR because the Date class can be lost\n\t'use strict';\n\t/*jshint eqnull:true */\n\n\tvar lazysizes,\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tlazySizesCfg;\n\n\t(function(){\n\t\tvar prop;\n\n\t\tvar lazySizesDefaults = {\n\t\t\tlazyClass: 'lazyload',\n\t\t\tloadedClass: 'lazyloaded',\n\t\t\tloadingClass: 'lazyloading',\n\t\t\tpreloadClass: 'lazypreload',\n\t\t\terrorClass: 'lazyerror',\n\t\t\t//strictClass: 'lazystrict',\n\t\t\tautosizesClass: 'lazyautosizes',\n\t\t\tfastLoadedClass: 'ls-is-cached',\n\t\t\tiframeLoadMode: 0,\n\t\t\tsrcAttr: 'data-src',\n\t\t\tsrcsetAttr: 'data-srcset',\n\t\t\tsizesAttr: 'data-sizes',\n\t\t\t//preloadAfterLoad: false,\n\t\t\tminSize: 40,\n\t\t\tcustomMedia: {},\n\t\t\tinit: true,\n\t\t\texpFactor: 1.5,\n\t\t\thFac: 0.8,\n\t\t\tloadMode: 2,\n\t\t\tloadHidden: true,\n\t\t\tricTimeout: 0,\n\t\t\tthrottleDelay: 125,\n\t\t};\n\n\t\tlazySizesCfg = window.lazySizesConfig || window.lazysizesConfig || {};\n\n\t\tfor(prop in lazySizesDefaults){\n\t\t\tif(!(prop in lazySizesCfg)){\n\t\t\t\tlazySizesCfg[prop] = lazySizesDefaults[prop];\n\t\t\t}\n\t\t}\n\t})();\n\n\tif (!document || !document.getElementsByClassName) {\n\t\treturn {\n\t\t\tinit: function () {},\n\t\t\t/**\n\t\t\t * @type { LazySizesConfigPartial }\n\t\t\t */\n\t\t\tcfg: lazySizesCfg,\n\t\t\t/**\n\t\t\t * @type { true }\n\t\t\t */\n\t\t\tnoSupport: true,\n\t\t};\n\t}\n\n\tvar docElem = document.documentElement;\n\n\tvar supportPicture = window.HTMLPictureElement;\n\n\tvar _addEventListener = 'addEventListener';\n\n\tvar _getAttribute = 'getAttribute';\n\n\t/**\n\t * Update to bind to window because 'this' becomes null during SSR\n\t * builds.\n\t */\n\tvar addEventListener = window[_addEventListener].bind(window);\n\n\tvar setTimeout = window.setTimeout;\n\n\tvar requestAnimationFrame = window.requestAnimationFrame || setTimeout;\n\n\tvar requestIdleCallback = window.requestIdleCallback;\n\n\tvar regPicture = /^picture$/i;\n\n\tvar loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];\n\n\tvar regClassCache = {};\n\n\tvar forEach = Array.prototype.forEach;\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar hasClass = function(ele, cls) {\n\t\tif(!regClassCache[cls]){\n\t\t\tregClassCache[cls] = new RegExp('(\\\\s|^)'+cls+'(\\\\s|$)');\n\t\t}\n\t\treturn regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar addClass = function(ele, cls) {\n\t\tif (!hasClass(ele, cls)){\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);\n\t\t}\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar removeClass = function(ele, cls) {\n\t\tvar reg;\n\t\tif ((reg = hasClass(ele,cls))) {\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));\n\t\t}\n\t};\n\n\tvar addRemoveLoadEvents = function(dom, fn, add){\n\t\tvar action = add ? _addEventListener : 'removeEventListener';\n\t\tif(add){\n\t\t\taddRemoveLoadEvents(dom, fn);\n\t\t}\n\t\tloadEvents.forEach(function(evt){\n\t\t\tdom[action](evt, fn);\n\t\t});\n\t};\n\n\t/**\n\t * @param elem { Element }\n\t * @param name { string }\n\t * @param detail { any }\n\t * @param noBubbles { boolean }\n\t * @param noCancelable { boolean }\n\t * @returns { CustomEvent }\n\t */\n\tvar triggerEvent = function(elem, name, detail, noBubbles, noCancelable){\n\t\tvar event = document.createEvent('Event');\n\n\t\tif(!detail){\n\t\t\tdetail = {};\n\t\t}\n\n\t\tdetail.instance = lazysizes;\n\n\t\tevent.initEvent(name, !noBubbles, !noCancelable);\n\n\t\tevent.detail = detail;\n\n\t\telem.dispatchEvent(event);\n\t\treturn event;\n\t};\n\n\tvar updatePolyfill = function (el, full){\n\t\tvar polyfill;\n\t\tif( !supportPicture && ( polyfill = (window.picturefill || lazySizesCfg.pf) ) ){\n\t\t\tif(full && full.src && !el[_getAttribute]('srcset')){\n\t\t\t\tel.setAttribute('srcset', full.src);\n\t\t\t}\n\t\t\tpolyfill({reevaluate: true, elements: [el]});\n\t\t} else if(full && full.src){\n\t\t\tel.src = full.src;\n\t\t}\n\t};\n\n\tvar getCSS = function (elem, style){\n\t\treturn (getComputedStyle(elem, null) || {})[style];\n\t};\n\n\t/**\n\t *\n\t * @param elem { Element }\n\t * @param parent { Element }\n\t * @param [width] {number}\n\t * @returns {number}\n\t */\n\tvar getWidth = function(elem, parent, width){\n\t\twidth = width || elem.offsetWidth;\n\n\t\twhile(width < lazySizesCfg.minSize && parent && !elem._lazysizesWidth){\n\t\t\twidth = parent.offsetWidth;\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tvar rAF = (function(){\n\t\tvar running, waiting;\n\t\tvar firstFns = [];\n\t\tvar secondFns = [];\n\t\tvar fns = firstFns;\n\n\t\tvar run = function(){\n\t\t\tvar runFns = fns;\n\n\t\t\tfns = firstFns.length ? secondFns : firstFns;\n\n\t\t\trunning = true;\n\t\t\twaiting = false;\n\n\t\t\twhile(runFns.length){\n\t\t\t\trunFns.shift()();\n\t\t\t}\n\n\t\t\trunning = false;\n\t\t};\n\n\t\tvar rafBatch = function(fn, queue){\n\t\t\tif(running && !queue){\n\t\t\t\tfn.apply(this, arguments);\n\t\t\t} else {\n\t\t\t\tfns.push(fn);\n\n\t\t\t\tif(!waiting){\n\t\t\t\t\twaiting = true;\n\t\t\t\t\t(document.hidden ? setTimeout : requestAnimationFrame)(run);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\trafBatch._lsFlush = run;\n\n\t\treturn rafBatch;\n\t})();\n\n\tvar rAFIt = function(fn, simple){\n\t\treturn simple ?\n\t\t\tfunction() {\n\t\t\t\trAF(fn);\n\t\t\t} :\n\t\t\tfunction(){\n\t\t\t\tvar that = this;\n\t\t\t\tvar args = arguments;\n\t\t\t\trAF(function(){\n\t\t\t\t\tfn.apply(that, args);\n\t\t\t\t});\n\t\t\t}\n\t\t;\n\t};\n\n\tvar throttle = function(fn){\n\t\tvar running;\n\t\tvar lastTime = 0;\n\t\tvar gDelay = lazySizesCfg.throttleDelay;\n\t\tvar rICTimeout = lazySizesCfg.ricTimeout;\n\t\tvar run = function(){\n\t\t\trunning = false;\n\t\t\tlastTime = Date.now();\n\t\t\tfn();\n\t\t};\n\t\tvar idleCallback = requestIdleCallback && rICTimeout > 49 ?\n\t\t\tfunction(){\n\t\t\t\trequestIdleCallback(run, {timeout: rICTimeout});\n\n\t\t\t\tif(rICTimeout !== lazySizesCfg.ricTimeout){\n\t\t\t\t\trICTimeout = lazySizesCfg.ricTimeout;\n\t\t\t\t}\n\t\t\t} :\n\t\t\trAFIt(function(){\n\t\t\t\tsetTimeout(run);\n\t\t\t}, true)\n\t\t;\n\n\t\treturn function(isPriority){\n\t\t\tvar delay;\n\n\t\t\tif((isPriority = isPriority === true)){\n\t\t\t\trICTimeout = 33;\n\t\t\t}\n\n\t\t\tif(running){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trunning = true;\n\n\t\t\tdelay = gDelay - (Date.now() - lastTime);\n\n\t\t\tif(delay < 0){\n\t\t\t\tdelay = 0;\n\t\t\t}\n\n\t\t\tif(isPriority || delay < 9){\n\t\t\t\tidleCallback();\n\t\t\t} else {\n\t\t\t\tsetTimeout(idleCallback, delay);\n\t\t\t}\n\t\t};\n\t};\n\n\t//based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html\n\tvar debounce = function(func) {\n\t\tvar timeout, timestamp;\n\t\tvar wait = 99;\n\t\tvar run = function(){\n\t\t\ttimeout = null;\n\t\t\tfunc();\n\t\t};\n\t\tvar later = function() {\n\t\t\tvar last = Date.now() - timestamp;\n\n\t\t\tif (last < wait) {\n\t\t\t\tsetTimeout(later, wait - last);\n\t\t\t} else {\n\t\t\t\t(requestIdleCallback || run)(run);\n\t\t\t}\n\t\t};\n\n\t\treturn function() {\n\t\t\ttimestamp = Date.now();\n\n\t\t\tif (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t}\n\t\t};\n\t};\n\n\tvar loader = (function(){\n\t\tvar preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;\n\n\t\tvar eLvW, elvH, eLtop, eLleft, eLright, eLbottom, isBodyHidden;\n\n\t\tvar regImg = /^img$/i;\n\t\tvar regIframe = /^iframe$/i;\n\n\t\tvar supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));\n\n\t\tvar shrinkExpand = 0;\n\t\tvar currentExpand = 0;\n\n\t\tvar isLoading = 0;\n\t\tvar lowRuns = -1;\n\n\t\tvar resetPreloading = function(e){\n\t\t\tisLoading--;\n\t\t\tif(!e || isLoading < 0 || !e.target){\n\t\t\t\tisLoading = 0;\n\t\t\t}\n\t\t};\n\n\t\tvar isVisible = function (elem) {\n\t\t\tif (isBodyHidden == null) {\n\t\t\t\tisBodyHidden = getCSS(document.body, 'visibility') == 'hidden';\n\t\t\t}\n\n\t\t\treturn isBodyHidden || !(getCSS(elem.parentNode, 'visibility') == 'hidden' && getCSS(elem, 'visibility') == 'hidden');\n\t\t};\n\n\t\tvar isNestedVisible = function(elem, elemExpand){\n\t\t\tvar outerRect;\n\t\t\tvar parent = elem;\n\t\t\tvar visible = isVisible(elem);\n\n\t\t\teLtop -= elemExpand;\n\t\t\teLbottom += elemExpand;\n\t\t\teLleft -= elemExpand;\n\t\t\teLright += elemExpand;\n\n\t\t\twhile(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){\n\t\t\t\tvisible = ((getCSS(parent, 'opacity') || 1) > 0);\n\n\t\t\t\tif(visible && getCSS(parent, 'overflow') != 'visible'){\n\t\t\t\t\touterRect = parent.getBoundingClientRect();\n\t\t\t\t\tvisible = eLright > outerRect.left &&\n\t\t\t\t\t\teLleft < outerRect.right &&\n\t\t\t\t\t\teLbottom > outerRect.top - 1 &&\n\t\t\t\t\t\teLtop < outerRect.bottom + 1\n\t\t\t\t\t;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn visible;\n\t\t};\n\n\t\tvar checkElements = function() {\n\t\t\tvar eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal,\n\t\t\t\tbeforeExpandVal, defaultExpand, preloadExpand, hFac;\n\t\t\tvar lazyloadElems = lazysizes.elements;\n\n\t\t\tif((loadMode = lazySizesCfg.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){\n\n\t\t\t\ti = 0;\n\n\t\t\t\tlowRuns++;\n\n\t\t\t\tfor(; i < eLlen; i++){\n\n\t\t\t\t\tif(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}\n\n\t\t\t\t\tif(!supportScroll || (lazysizes.prematureUnveil && lazysizes.prematureUnveil(lazyloadElems[i]))){unveilElement(lazyloadElems[i]);continue;}\n\n\t\t\t\t\tif(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){\n\t\t\t\t\t\telemExpand = currentExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!defaultExpand) {\n\t\t\t\t\t\tdefaultExpand = (!lazySizesCfg.expand || lazySizesCfg.expand < 1) ?\n\t\t\t\t\t\t\tdocElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370 :\n\t\t\t\t\t\t\tlazySizesCfg.expand;\n\n\t\t\t\t\t\tlazysizes._defEx = defaultExpand;\n\n\t\t\t\t\t\tpreloadExpand = defaultExpand * lazySizesCfg.expFactor;\n\t\t\t\t\t\thFac = lazySizesCfg.hFac;\n\t\t\t\t\t\tisBodyHidden = null;\n\n\t\t\t\t\t\tif(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){\n\t\t\t\t\t\t\tcurrentExpand = preloadExpand;\n\t\t\t\t\t\t\tlowRuns = 0;\n\t\t\t\t\t\t} else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){\n\t\t\t\t\t\t\tcurrentExpand = defaultExpand;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcurrentExpand = shrinkExpand;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(beforeExpandVal !== elemExpand){\n\t\t\t\t\t\teLvW = innerWidth + (elemExpand * hFac);\n\t\t\t\t\t\telvH = innerHeight + elemExpand;\n\t\t\t\t\t\telemNegativeExpand = elemExpand * -1;\n\t\t\t\t\t\tbeforeExpandVal = elemExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\trect = lazyloadElems[i].getBoundingClientRect();\n\n\t\t\t\t\tif ((eLbottom = rect.bottom) >= elemNegativeExpand &&\n\t\t\t\t\t\t(eLtop = rect.top) <= elvH &&\n\t\t\t\t\t\t(eLright = rect.right) >= elemNegativeExpand * hFac &&\n\t\t\t\t\t\t(eLleft = rect.left) <= eLvW &&\n\t\t\t\t\t\t(eLbottom || eLright || eLleft || eLtop) &&\n\t\t\t\t\t\t(lazySizesCfg.loadHidden || isVisible(lazyloadElems[i])) &&\n\t\t\t\t\t\t((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){\n\t\t\t\t\t\tunveilElement(lazyloadElems[i]);\n\t\t\t\t\t\tloadedSomething = true;\n\t\t\t\t\t\tif(isLoading > 9){break;}\n\t\t\t\t\t} else if(!loadedSomething && isCompleted && !autoLoadElem &&\n\t\t\t\t\t\tisLoading < 4 && lowRuns < 4 && loadMode > 2 &&\n\t\t\t\t\t\t(preloadElems[0] || lazySizesCfg.preloadAfterLoad) &&\n\t\t\t\t\t\t(preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesCfg.sizesAttr) != 'auto')))){\n\t\t\t\t\t\tautoLoadElem = preloadElems[0] || lazyloadElems[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(autoLoadElem && !loadedSomething){\n\t\t\t\t\tunveilElement(autoLoadElem);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar throttledCheckElements = throttle(checkElements);\n\n\t\tvar switchLoadingClass = function(e){\n\t\t\tvar elem = e.target;\n\n\t\t\tif (elem._lazyCache) {\n\t\t\t\tdelete elem._lazyCache;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresetPreloading(e);\n\t\t\taddClass(elem, lazySizesCfg.loadedClass);\n\t\t\tremoveClass(elem, lazySizesCfg.loadingClass);\n\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass);\n\t\t\ttriggerEvent(elem, 'lazyloaded');\n\t\t};\n\t\tvar rafedSwitchLoadingClass = rAFIt(switchLoadingClass);\n\t\tvar rafSwitchLoadingClass = function(e){\n\t\t\trafedSwitchLoadingClass({target: e.target});\n\t\t};\n\n\t\tvar changeIframeSrc = function(elem, src){\n\t\t\tvar loadMode = elem.getAttribute('data-load-mode') || lazySizesCfg.iframeLoadMode;\n\n\t\t\t// loadMode can be also a string!\n\t\t\tif (loadMode == 0) {\n\t\t\t\telem.contentWindow.location.replace(src);\n\t\t\t} else if (loadMode == 1) {\n\t\t\t\telem.src = src;\n\t\t\t}\n\t\t};\n\n\t\tvar handleSources = function(source){\n\t\t\tvar customMedia;\n\n\t\t\tvar sourceSrcset = source[_getAttribute](lazySizesCfg.srcsetAttr);\n\n\t\t\tif( (customMedia = lazySizesCfg.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){\n\t\t\t\tsource.setAttribute('media', customMedia);\n\t\t\t}\n\n\t\t\tif(sourceSrcset){\n\t\t\t\tsource.setAttribute('srcset', sourceSrcset);\n\t\t\t}\n\t\t};\n\n\t\tvar lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){\n\t\t\tvar src, srcset, parent, isPicture, event, firesLoad;\n\n\t\t\tif(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){\n\n\t\t\t\tif(sizes){\n\t\t\t\t\tif(isAuto){\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.autosizesClass);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.setAttribute('sizes', sizes);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsrcset = elem[_getAttribute](lazySizesCfg.srcsetAttr);\n\t\t\t\tsrc = elem[_getAttribute](lazySizesCfg.srcAttr);\n\n\t\t\t\tif(isImg) {\n\t\t\t\t\tparent = elem.parentNode;\n\t\t\t\t\tisPicture = parent && regPicture.test(parent.nodeName || '');\n\t\t\t\t}\n\n\t\t\t\tfiresLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));\n\n\t\t\t\tevent = {target: elem};\n\n\t\t\t\taddClass(elem, lazySizesCfg.loadingClass);\n\n\t\t\t\tif(firesLoad){\n\t\t\t\t\tclearTimeout(resetPreloadingTimer);\n\t\t\t\t\tresetPreloadingTimer = setTimeout(resetPreloading, 2500);\n\t\t\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass, true);\n\t\t\t\t}\n\n\t\t\t\tif(isPicture){\n\t\t\t\t\tforEach.call(parent.getElementsByTagName('source'), handleSources);\n\t\t\t\t}\n\n\t\t\t\tif(srcset){\n\t\t\t\t\telem.setAttribute('srcset', srcset);\n\t\t\t\t} else if(src && !isPicture){\n\t\t\t\t\tif(regIframe.test(elem.nodeName)){\n\t\t\t\t\t\tchangeIframeSrc(elem, src);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.src = src;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(isImg && (srcset || isPicture)){\n\t\t\t\t\tupdatePolyfill(elem, {src: src});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(elem._lazyRace){\n\t\t\t\tdelete elem._lazyRace;\n\t\t\t}\n\t\t\tremoveClass(elem, lazySizesCfg.lazyClass);\n\n\t\t\trAF(function(){\n\t\t\t\t// Part of this can be removed as soon as this fix is older: https://bugs.chromium.org/p/chromium/issues/detail?id=7731 (2015)\n\t\t\t\tvar isLoaded = elem.complete && elem.naturalWidth > 1;\n\n\t\t\t\tif( !firesLoad || isLoaded){\n\t\t\t\t\tif (isLoaded) {\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.fastLoadedClass);\n\t\t\t\t\t}\n\t\t\t\t\tswitchLoadingClass(event);\n\t\t\t\t\telem._lazyCache = true;\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\tif ('_lazyCache' in elem) {\n\t\t\t\t\t\t\tdelete elem._lazyCache;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 9);\n\t\t\t\t}\n\t\t\t\tif (elem.loading == 'lazy') {\n\t\t\t\t\tisLoading--;\n\t\t\t\t}\n\t\t\t}, true);\n\t\t});\n\n\t\t/**\n\t\t *\n\t\t * @param elem { Element }\n\t\t */\n\t\tvar unveilElement = function (elem){\n\t\t\tif (elem._lazyRace) {return;}\n\t\t\tvar detail;\n\n\t\t\tvar isImg = regImg.test(elem.nodeName);\n\n\t\t\t//allow using sizes=\"auto\", but don't use. it's invalid. Use data-sizes=\"auto\" or a valid value for sizes instead (i.e.: sizes=\"80vw\")\n\t\t\tvar sizes = isImg && (elem[_getAttribute](lazySizesCfg.sizesAttr) || elem[_getAttribute]('sizes'));\n\t\t\tvar isAuto = sizes == 'auto';\n\n\t\t\tif( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesCfg.errorClass) && hasClass(elem, lazySizesCfg.lazyClass)){return;}\n\n\t\t\tdetail = triggerEvent(elem, 'lazyunveilread').detail;\n\n\t\t\tif(isAuto){\n\t\t\t\t autoSizer.updateElem(elem, true, elem.offsetWidth);\n\t\t\t}\n\n\t\t\telem._lazyRace = true;\n\t\t\tisLoading++;\n\n\t\t\tlazyUnveil(elem, detail, isAuto, sizes, isImg);\n\t\t};\n\n\t\tvar afterScroll = debounce(function(){\n\t\t\tlazySizesCfg.loadMode = 3;\n\t\t\tthrottledCheckElements();\n\t\t});\n\n\t\tvar altLoadmodeScrollListner = function(){\n\t\t\tif(lazySizesCfg.loadMode == 3){\n\t\t\t\tlazySizesCfg.loadMode = 2;\n\t\t\t}\n\t\t\tafterScroll();\n\t\t};\n\n\t\tvar onload = function(){\n\t\t\tif(isCompleted){return;}\n\t\t\tif(Date.now() - started < 999){\n\t\t\t\tsetTimeout(onload, 999);\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\tisCompleted = true;\n\n\t\t\tlazySizesCfg.loadMode = 3;\n\n\t\t\tthrottledCheckElements();\n\n\t\t\taddEventListener('scroll', altLoadmodeScrollListner, true);\n\t\t};\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tstarted = Date.now();\n\n\t\t\t\tlazysizes.elements = document.getElementsByClassName(lazySizesCfg.lazyClass);\n\t\t\t\tpreloadElems = document.getElementsByClassName(lazySizesCfg.lazyClass + ' ' + lazySizesCfg.preloadClass);\n\n\t\t\t\taddEventListener('scroll', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('resize', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('pageshow', function (e) {\n\t\t\t\t\tif (e.persisted) {\n\t\t\t\t\t\tvar loadingElements = document.querySelectorAll('.' + lazySizesCfg.loadingClass);\n\n\t\t\t\t\t\tif (loadingElements.length && loadingElements.forEach) {\n\t\t\t\t\t\t\trequestAnimationFrame(function () {\n\t\t\t\t\t\t\t\tloadingElements.forEach( function (img) {\n\t\t\t\t\t\t\t\t\tif (img.complete) {\n\t\t\t\t\t\t\t\t\t\tunveilElement(img);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(window.MutationObserver){\n\t\t\t\t\tnew MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );\n\t\t\t\t} else {\n\t\t\t\t\tdocElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);\n\t\t\t\t\tdocElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);\n\t\t\t\t\tsetInterval(throttledCheckElements, 999);\n\t\t\t\t}\n\n\t\t\t\taddEventListener('hashchange', throttledCheckElements, true);\n\n\t\t\t\t//, 'fullscreenchange'\n\t\t\t\t['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend'].forEach(function(name){\n\t\t\t\t\tdocument[_addEventListener](name, throttledCheckElements, true);\n\t\t\t\t});\n\n\t\t\t\tif((/d$|^c/.test(document.readyState))){\n\t\t\t\t\tonload();\n\t\t\t\t} else {\n\t\t\t\t\taddEventListener('load', onload);\n\t\t\t\t\tdocument[_addEventListener]('DOMContentLoaded', throttledCheckElements);\n\t\t\t\t\tsetTimeout(onload, 20000);\n\t\t\t\t}\n\n\t\t\t\tif(lazysizes.elements.length){\n\t\t\t\t\tcheckElements();\n\t\t\t\t\trAF._lsFlush();\n\t\t\t\t} else {\n\t\t\t\t\tthrottledCheckElements();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcheckElems: throttledCheckElements,\n\t\t\tunveil: unveilElement,\n\t\t\t_aLSL: altLoadmodeScrollListner,\n\t\t};\n\t})();\n\n\n\tvar autoSizer = (function(){\n\t\tvar autosizesElems;\n\n\t\tvar sizeElement = rAFIt(function(elem, parent, event, width){\n\t\t\tvar sources, i, len;\n\t\t\telem._lazysizesWidth = width;\n\t\t\twidth += 'px';\n\n\t\t\telem.setAttribute('sizes', width);\n\n\t\t\tif(regPicture.test(parent.nodeName || '')){\n\t\t\t\tsources = parent.getElementsByTagName('source');\n\t\t\t\tfor(i = 0, len = sources.length; i < len; i++){\n\t\t\t\t\tsources[i].setAttribute('sizes', width);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!event.detail.dataAttr){\n\t\t\t\tupdatePolyfill(elem, event.detail);\n\t\t\t}\n\t\t});\n\t\t/**\n\t\t *\n\t\t * @param elem {Element}\n\t\t * @param dataAttr\n\t\t * @param [width] { number }\n\t\t */\n\t\tvar getSizeElement = function (elem, dataAttr, width){\n\t\t\tvar event;\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif(parent){\n\t\t\t\twidth = getWidth(elem, parent, width);\n\t\t\t\tevent = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});\n\n\t\t\t\tif(!event.defaultPrevented){\n\t\t\t\t\twidth = event.detail.width;\n\n\t\t\t\t\tif(width && width !== elem._lazysizesWidth){\n\t\t\t\t\t\tsizeElement(elem, parent, event, width);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar updateElementsSizes = function(){\n\t\t\tvar i;\n\t\t\tvar len = autosizesElems.length;\n\t\t\tif(len){\n\t\t\t\ti = 0;\n\n\t\t\t\tfor(; i < len; i++){\n\t\t\t\t\tgetSizeElement(autosizesElems[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar debouncedUpdateElementsSizes = debounce(updateElementsSizes);\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tautosizesElems = document.getElementsByClassName(lazySizesCfg.autosizesClass);\n\t\t\t\taddEventListener('resize', debouncedUpdateElementsSizes);\n\t\t\t},\n\t\t\tcheckElems: debouncedUpdateElementsSizes,\n\t\t\tupdateElem: getSizeElement\n\t\t};\n\t})();\n\n\tvar init = function(){\n\t\tif(!init.i && document.getElementsByClassName){\n\t\t\tinit.i = true;\n\t\t\tautoSizer._();\n\t\t\tloader._();\n\t\t}\n\t};\n\n\tsetTimeout(function(){\n\t\tif(lazySizesCfg.init){\n\t\t\tinit();\n\t\t}\n\t});\n\n\tlazysizes = {\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tcfg: lazySizesCfg,\n\t\tautoSizer: autoSizer,\n\t\tloader: loader,\n\t\tinit: init,\n\t\tuP: updatePolyfill,\n\t\taC: addClass,\n\t\trC: removeClass,\n\t\thC: hasClass,\n\t\tfire: triggerEvent,\n\t\tgW: getWidth,\n\t\trAF: rAF,\n\t};\n\n\treturn lazysizes;\n}\n));\n","/*global define:false */\n/**\n * Copyright 2012-2017 Craig Campbell\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * Mousetrap is a simple keyboard shortcut library for Javascript with\n * no external dependencies\n *\n * @version 1.6.5\n * @url craig.is/killing/mice\n */\n(function(window, document, undefined) {\n\n // Check if mousetrap is used inside browser, if not, return\n if (!window) {\n return;\n }\n\n /**\n * mapping of special keycodes to their corresponding keys\n *\n * everything in this dictionary cannot use keypress events\n * so it has to be here to map to the correct keycodes for\n * keyup/keydown events\n *\n * @type {Object}\n */\n var _MAP = {\n 8: 'backspace',\n 9: 'tab',\n 13: 'enter',\n 16: 'shift',\n 17: 'ctrl',\n 18: 'alt',\n 20: 'capslock',\n 27: 'esc',\n 32: 'space',\n 33: 'pageup',\n 34: 'pagedown',\n 35: 'end',\n 36: 'home',\n 37: 'left',\n 38: 'up',\n 39: 'right',\n 40: 'down',\n 45: 'ins',\n 46: 'del',\n 91: 'meta',\n 93: 'meta',\n 224: 'meta'\n };\n\n /**\n * mapping for special characters so they can support\n *\n * this dictionary is only used incase you want to bind a\n * keyup or keydown event to one of these keys\n *\n * @type {Object}\n */\n var _KEYCODE_MAP = {\n 106: '*',\n 107: '+',\n 109: '-',\n 110: '.',\n 111 : '/',\n 186: ';',\n 187: '=',\n 188: ',',\n 189: '-',\n 190: '.',\n 191: '/',\n 192: '`',\n 219: '[',\n 220: '\\\\',\n 221: ']',\n 222: '\\''\n };\n\n /**\n * this is a mapping of keys that require shift on a US keypad\n * back to the non shift equivelents\n *\n * this is so you can use keyup events with these keys\n *\n * note that this will only work reliably on US keyboards\n *\n * @type {Object}\n */\n var _SHIFT_MAP = {\n '~': '`',\n '!': '1',\n '@': '2',\n '#': '3',\n '$': '4',\n '%': '5',\n '^': '6',\n '&': '7',\n '*': '8',\n '(': '9',\n ')': '0',\n '_': '-',\n '+': '=',\n ':': ';',\n '\\\"': '\\'',\n '<': ',',\n '>': '.',\n '?': '/',\n '|': '\\\\'\n };\n\n /**\n * this is a list of special strings you can use to map\n * to modifier keys when you specify your keyboard shortcuts\n *\n * @type {Object}\n */\n var _SPECIAL_ALIASES = {\n 'option': 'alt',\n 'command': 'meta',\n 'return': 'enter',\n 'escape': 'esc',\n 'plus': '+',\n 'mod': /Mac|iPod|iPhone|iPad/.test(navigator.platform) ? 'meta' : 'ctrl'\n };\n\n /**\n * variable to store the flipped version of _MAP from above\n * needed to check if we should use keypress or not when no action\n * is specified\n *\n * @type {Object|undefined}\n */\n var _REVERSE_MAP;\n\n /**\n * loop through the f keys, f1 to f19 and add them to the map\n * programatically\n */\n for (var i = 1; i < 20; ++i) {\n _MAP[111 + i] = 'f' + i;\n }\n\n /**\n * loop through to map numbers on the numeric keypad\n */\n for (i = 0; i <= 9; ++i) {\n\n // This needs to use a string cause otherwise since 0 is falsey\n // mousetrap will never fire for numpad 0 pressed as part of a keydown\n // event.\n //\n // @see https://github.com/ccampbell/mousetrap/pull/258\n _MAP[i + 96] = i.toString();\n }\n\n /**\n * cross browser add event method\n *\n * @param {Element|HTMLDocument} object\n * @param {string} type\n * @param {Function} callback\n * @returns void\n */\n function _addEvent(object, type, callback) {\n if (object.addEventListener) {\n object.addEventListener(type, callback, false);\n return;\n }\n\n object.attachEvent('on' + type, callback);\n }\n\n /**\n * takes the event and returns the key character\n *\n * @param {Event} e\n * @return {string}\n */\n function _characterFromEvent(e) {\n\n // for keypress events we should return the character as is\n if (e.type == 'keypress') {\n var character = String.fromCharCode(e.which);\n\n // if the shift key is not pressed then it is safe to assume\n // that we want the character to be lowercase. this means if\n // you accidentally have caps lock on then your key bindings\n // will continue to work\n //\n // the only side effect that might not be desired is if you\n // bind something like 'A' cause you want to trigger an\n // event when capital A is pressed caps lock will no longer\n // trigger the event. shift+a will though.\n if (!e.shiftKey) {\n character = character.toLowerCase();\n }\n\n return character;\n }\n\n // for non keypress events the special maps are needed\n if (_MAP[e.which]) {\n return _MAP[e.which];\n }\n\n if (_KEYCODE_MAP[e.which]) {\n return _KEYCODE_MAP[e.which];\n }\n\n // if it is not in the special map\n\n // with keydown and keyup events the character seems to always\n // come in as an uppercase character whether you are pressing shift\n // or not. we should make sure it is always lowercase for comparisons\n return String.fromCharCode(e.which).toLowerCase();\n }\n\n /**\n * checks if two arrays are equal\n *\n * @param {Array} modifiers1\n * @param {Array} modifiers2\n * @returns {boolean}\n */\n function _modifiersMatch(modifiers1, modifiers2) {\n return modifiers1.sort().join(',') === modifiers2.sort().join(',');\n }\n\n /**\n * takes a key event and figures out what the modifiers are\n *\n * @param {Event} e\n * @returns {Array}\n */\n function _eventModifiers(e) {\n var modifiers = [];\n\n if (e.shiftKey) {\n modifiers.push('shift');\n }\n\n if (e.altKey) {\n modifiers.push('alt');\n }\n\n if (e.ctrlKey) {\n modifiers.push('ctrl');\n }\n\n if (e.metaKey) {\n modifiers.push('meta');\n }\n\n return modifiers;\n }\n\n /**\n * prevents default for this event\n *\n * @param {Event} e\n * @returns void\n */\n function _preventDefault(e) {\n if (e.preventDefault) {\n e.preventDefault();\n return;\n }\n\n e.returnValue = false;\n }\n\n /**\n * stops propogation for this event\n *\n * @param {Event} e\n * @returns void\n */\n function _stopPropagation(e) {\n if (e.stopPropagation) {\n e.stopPropagation();\n return;\n }\n\n e.cancelBubble = true;\n }\n\n /**\n * determines if the keycode specified is a modifier key or not\n *\n * @param {string} key\n * @returns {boolean}\n */\n function _isModifier(key) {\n return key == 'shift' || key == 'ctrl' || key == 'alt' || key == 'meta';\n }\n\n /**\n * reverses the map lookup so that we can look for specific keys\n * to see what can and can't use keypress\n *\n * @return {Object}\n */\n function _getReverseMap() {\n if (!_REVERSE_MAP) {\n _REVERSE_MAP = {};\n for (var key in _MAP) {\n\n // pull out the numeric keypad from here cause keypress should\n // be able to detect the keys from the character\n if (key > 95 && key < 112) {\n continue;\n }\n\n if (_MAP.hasOwnProperty(key)) {\n _REVERSE_MAP[_MAP[key]] = key;\n }\n }\n }\n return _REVERSE_MAP;\n }\n\n /**\n * picks the best action based on the key combination\n *\n * @param {string} key - character for key\n * @param {Array} modifiers\n * @param {string=} action passed in\n */\n function _pickBestAction(key, modifiers, action) {\n\n // if no action was picked in we should try to pick the one\n // that we think would work best for this key\n if (!action) {\n action = _getReverseMap()[key] ? 'keydown' : 'keypress';\n }\n\n // modifier keys don't work as expected with keypress,\n // switch to keydown\n if (action == 'keypress' && modifiers.length) {\n action = 'keydown';\n }\n\n return action;\n }\n\n /**\n * Converts from a string key combination to an array\n *\n * @param {string} combination like \"command+shift+l\"\n * @return {Array}\n */\n function _keysFromString(combination) {\n if (combination === '+') {\n return ['+'];\n }\n\n combination = combination.replace(/\\+{2}/g, '+plus');\n return combination.split('+');\n }\n\n /**\n * Gets info for a specific key combination\n *\n * @param {string} combination key combination (\"command+s\" or \"a\" or \"*\")\n * @param {string=} action\n * @returns {Object}\n */\n function _getKeyInfo(combination, action) {\n var keys;\n var key;\n var i;\n var modifiers = [];\n\n // take the keys from this pattern and figure out what the actual\n // pattern is all about\n keys = _keysFromString(combination);\n\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n\n // normalize key names\n if (_SPECIAL_ALIASES[key]) {\n key = _SPECIAL_ALIASES[key];\n }\n\n // if this is not a keypress event then we should\n // be smart about using shift keys\n // this will only work for US keyboards however\n if (action && action != 'keypress' && _SHIFT_MAP[key]) {\n key = _SHIFT_MAP[key];\n modifiers.push('shift');\n }\n\n // if this key is a modifier then add it to the list of modifiers\n if (_isModifier(key)) {\n modifiers.push(key);\n }\n }\n\n // depending on what the key combination is\n // we will try to pick the best event for it\n action = _pickBestAction(key, modifiers, action);\n\n return {\n key: key,\n modifiers: modifiers,\n action: action\n };\n }\n\n function _belongsTo(element, ancestor) {\n if (element === null || element === document) {\n return false;\n }\n\n if (element === ancestor) {\n return true;\n }\n\n return _belongsTo(element.parentNode, ancestor);\n }\n\n function Mousetrap(targetElement) {\n var self = this;\n\n targetElement = targetElement || document;\n\n if (!(self instanceof Mousetrap)) {\n return new Mousetrap(targetElement);\n }\n\n /**\n * element to attach key events to\n *\n * @type {Element}\n */\n self.target = targetElement;\n\n /**\n * a list of all the callbacks setup via Mousetrap.bind()\n *\n * @type {Object}\n */\n self._callbacks = {};\n\n /**\n * direct map of string combinations to callbacks used for trigger()\n *\n * @type {Object}\n */\n self._directMap = {};\n\n /**\n * keeps track of what level each sequence is at since multiple\n * sequences can start out with the same sequence\n *\n * @type {Object}\n */\n var _sequenceLevels = {};\n\n /**\n * variable to store the setTimeout call\n *\n * @type {null|number}\n */\n var _resetTimer;\n\n /**\n * temporary state where we will ignore the next keyup\n *\n * @type {boolean|string}\n */\n var _ignoreNextKeyup = false;\n\n /**\n * temporary state where we will ignore the next keypress\n *\n * @type {boolean}\n */\n var _ignoreNextKeypress = false;\n\n /**\n * are we currently inside of a sequence?\n * type of action (\"keyup\" or \"keydown\" or \"keypress\") or false\n *\n * @type {boolean|string}\n */\n var _nextExpectedAction = false;\n\n /**\n * resets all sequence counters except for the ones passed in\n *\n * @param {Object} doNotReset\n * @returns void\n */\n function _resetSequences(doNotReset) {\n doNotReset = doNotReset || {};\n\n var activeSequences = false,\n key;\n\n for (key in _sequenceLevels) {\n if (doNotReset[key]) {\n activeSequences = true;\n continue;\n }\n _sequenceLevels[key] = 0;\n }\n\n if (!activeSequences) {\n _nextExpectedAction = false;\n }\n }\n\n /**\n * finds all callbacks that match based on the keycode, modifiers,\n * and action\n *\n * @param {string} character\n * @param {Array} modifiers\n * @param {Event|Object} e\n * @param {string=} sequenceName - name of the sequence we are looking for\n * @param {string=} combination\n * @param {number=} level\n * @returns {Array}\n */\n function _getMatches(character, modifiers, e, sequenceName, combination, level) {\n var i;\n var callback;\n var matches = [];\n var action = e.type;\n\n // if there are no events related to this keycode\n if (!self._callbacks[character]) {\n return [];\n }\n\n // if a modifier key is coming up on its own we should allow it\n if (action == 'keyup' && _isModifier(character)) {\n modifiers = [character];\n }\n\n // loop through all callbacks for the key that was pressed\n // and see if any of them match\n for (i = 0; i < self._callbacks[character].length; ++i) {\n callback = self._callbacks[character][i];\n\n // if a sequence name is not specified, but this is a sequence at\n // the wrong level then move onto the next match\n if (!sequenceName && callback.seq && _sequenceLevels[callback.seq] != callback.level) {\n continue;\n }\n\n // if the action we are looking for doesn't match the action we got\n // then we should keep going\n if (action != callback.action) {\n continue;\n }\n\n // if this is a keypress event and the meta key and control key\n // are not pressed that means that we need to only look at the\n // character, otherwise check the modifiers as well\n //\n // chrome will not fire a keypress if meta or control is down\n // safari will fire a keypress if meta or meta+shift is down\n // firefox will fire a keypress if meta or control is down\n if ((action == 'keypress' && !e.metaKey && !e.ctrlKey) || _modifiersMatch(modifiers, callback.modifiers)) {\n\n // when you bind a combination or sequence a second time it\n // should overwrite the first one. if a sequenceName or\n // combination is specified in this call it does just that\n //\n // @todo make deleting its own method?\n var deleteCombo = !sequenceName && callback.combo == combination;\n var deleteSequence = sequenceName && callback.seq == sequenceName && callback.level == level;\n if (deleteCombo || deleteSequence) {\n self._callbacks[character].splice(i, 1);\n }\n\n matches.push(callback);\n }\n }\n\n return matches;\n }\n\n /**\n * actually calls the callback function\n *\n * if your callback function returns false this will use the jquery\n * convention - prevent default and stop propogation on the event\n *\n * @param {Function} callback\n * @param {Event} e\n * @returns void\n */\n function _fireCallback(callback, e, combo, sequence) {\n\n // if this event should not happen stop here\n if (self.stopCallback(e, e.target || e.srcElement, combo, sequence)) {\n return;\n }\n\n if (callback(e, combo) === false) {\n _preventDefault(e);\n _stopPropagation(e);\n }\n }\n\n /**\n * handles a character key event\n *\n * @param {string} character\n * @param {Array} modifiers\n * @param {Event} e\n * @returns void\n */\n self._handleKey = function(character, modifiers, e) {\n var callbacks = _getMatches(character, modifiers, e);\n var i;\n var doNotReset = {};\n var maxLevel = 0;\n var processedSequenceCallback = false;\n\n // Calculate the maxLevel for sequences so we can only execute the longest callback sequence\n for (i = 0; i < callbacks.length; ++i) {\n if (callbacks[i].seq) {\n maxLevel = Math.max(maxLevel, callbacks[i].level);\n }\n }\n\n // loop through matching callbacks for this key event\n for (i = 0; i < callbacks.length; ++i) {\n\n // fire for all sequence callbacks\n // this is because if for example you have multiple sequences\n // bound such as \"g i\" and \"g t\" they both need to fire the\n // callback for matching g cause otherwise you can only ever\n // match the first one\n if (callbacks[i].seq) {\n\n // only fire callbacks for the maxLevel to prevent\n // subsequences from also firing\n //\n // for example 'a option b' should not cause 'option b' to fire\n // even though 'option b' is part of the other sequence\n //\n // any sequences that do not match here will be discarded\n // below by the _resetSequences call\n if (callbacks[i].level != maxLevel) {\n continue;\n }\n\n processedSequenceCallback = true;\n\n // keep a list of which sequences were matches for later\n doNotReset[callbacks[i].seq] = 1;\n _fireCallback(callbacks[i].callback, e, callbacks[i].combo, callbacks[i].seq);\n continue;\n }\n\n // if there were no sequence matches but we are still here\n // that means this is a regular match so we should fire that\n if (!processedSequenceCallback) {\n _fireCallback(callbacks[i].callback, e, callbacks[i].combo);\n }\n }\n\n // if the key you pressed matches the type of sequence without\n // being a modifier (ie \"keyup\" or \"keypress\") then we should\n // reset all sequences that were not matched by this event\n //\n // this is so, for example, if you have the sequence \"h a t\" and you\n // type \"h e a r t\" it does not match. in this case the \"e\" will\n // cause the sequence to reset\n //\n // modifier keys are ignored because you can have a sequence\n // that contains modifiers such as \"enter ctrl+space\" and in most\n // cases the modifier key will be pressed before the next key\n //\n // also if you have a sequence such as \"ctrl+b a\" then pressing the\n // \"b\" key will trigger a \"keypress\" and a \"keydown\"\n //\n // the \"keydown\" is expected when there is a modifier, but the\n // \"keypress\" ends up matching the _nextExpectedAction since it occurs\n // after and that causes the sequence to reset\n //\n // we ignore keypresses in a sequence that directly follow a keydown\n // for the same character\n var ignoreThisKeypress = e.type == 'keypress' && _ignoreNextKeypress;\n if (e.type == _nextExpectedAction && !_isModifier(character) && !ignoreThisKeypress) {\n _resetSequences(doNotReset);\n }\n\n _ignoreNextKeypress = processedSequenceCallback && e.type == 'keydown';\n };\n\n /**\n * handles a keydown event\n *\n * @param {Event} e\n * @returns void\n */\n function _handleKeyEvent(e) {\n\n // normalize e.which for key events\n // @see http://stackoverflow.com/questions/4285627/javascript-keycode-vs-charcode-utter-confusion\n if (typeof e.which !== 'number') {\n e.which = e.keyCode;\n }\n\n var character = _characterFromEvent(e);\n\n // no character found then stop\n if (!character) {\n return;\n }\n\n // need to use === for the character check because the character can be 0\n if (e.type == 'keyup' && _ignoreNextKeyup === character) {\n _ignoreNextKeyup = false;\n return;\n }\n\n self.handleKey(character, _eventModifiers(e), e);\n }\n\n /**\n * called to set a 1 second timeout on the specified sequence\n *\n * this is so after each key press in the sequence you have 1 second\n * to press the next key before you have to start over\n *\n * @returns void\n */\n function _resetSequenceTimer() {\n clearTimeout(_resetTimer);\n _resetTimer = setTimeout(_resetSequences, 1000);\n }\n\n /**\n * binds a key sequence to an event\n *\n * @param {string} combo - combo specified in bind call\n * @param {Array} keys\n * @param {Function} callback\n * @param {string=} action\n * @returns void\n */\n function _bindSequence(combo, keys, callback, action) {\n\n // start off by adding a sequence level record for this combination\n // and setting the level to 0\n _sequenceLevels[combo] = 0;\n\n /**\n * callback to increase the sequence level for this sequence and reset\n * all other sequences that were active\n *\n * @param {string} nextAction\n * @returns {Function}\n */\n function _increaseSequence(nextAction) {\n return function() {\n _nextExpectedAction = nextAction;\n ++_sequenceLevels[combo];\n _resetSequenceTimer();\n };\n }\n\n /**\n * wraps the specified callback inside of another function in order\n * to reset all sequence counters as soon as this sequence is done\n *\n * @param {Event} e\n * @returns void\n */\n function _callbackAndReset(e) {\n _fireCallback(callback, e, combo);\n\n // we should ignore the next key up if the action is key down\n // or keypress. this is so if you finish a sequence and\n // release the key the final key will not trigger a keyup\n if (action !== 'keyup') {\n _ignoreNextKeyup = _characterFromEvent(e);\n }\n\n // weird race condition if a sequence ends with the key\n // another sequence begins with\n setTimeout(_resetSequences, 10);\n }\n\n // loop through keys one at a time and bind the appropriate callback\n // function. for any key leading up to the final one it should\n // increase the sequence. after the final, it should reset all sequences\n //\n // if an action is specified in the original bind call then that will\n // be used throughout. otherwise we will pass the action that the\n // next key in the sequence should match. this allows a sequence\n // to mix and match keypress and keydown events depending on which\n // ones are better suited to the key provided\n for (var i = 0; i < keys.length; ++i) {\n var isFinal = i + 1 === keys.length;\n var wrappedCallback = isFinal ? _callbackAndReset : _increaseSequence(action || _getKeyInfo(keys[i + 1]).action);\n _bindSingle(keys[i], wrappedCallback, action, combo, i);\n }\n }\n\n /**\n * binds a single keyboard combination\n *\n * @param {string} combination\n * @param {Function} callback\n * @param {string=} action\n * @param {string=} sequenceName - name of sequence if part of sequence\n * @param {number=} level - what part of the sequence the command is\n * @returns void\n */\n function _bindSingle(combination, callback, action, sequenceName, level) {\n\n // store a direct mapped reference for use with Mousetrap.trigger\n self._directMap[combination + ':' + action] = callback;\n\n // make sure multiple spaces in a row become a single space\n combination = combination.replace(/\\s+/g, ' ');\n\n var sequence = combination.split(' ');\n var info;\n\n // if this pattern is a sequence of keys then run through this method\n // to reprocess each pattern one key at a time\n if (sequence.length > 1) {\n _bindSequence(combination, sequence, callback, action);\n return;\n }\n\n info = _getKeyInfo(combination, action);\n\n // make sure to initialize array if this is the first time\n // a callback is added for this key\n self._callbacks[info.key] = self._callbacks[info.key] || [];\n\n // remove an existing match if there is one\n _getMatches(info.key, info.modifiers, {type: info.action}, sequenceName, combination, level);\n\n // add this call back to the array\n // if it is a sequence put it at the beginning\n // if not put it at the end\n //\n // this is important because the way these are processed expects\n // the sequence ones to come first\n self._callbacks[info.key][sequenceName ? 'unshift' : 'push']({\n callback: callback,\n modifiers: info.modifiers,\n action: info.action,\n seq: sequenceName,\n level: level,\n combo: combination\n });\n }\n\n /**\n * binds multiple combinations to the same callback\n *\n * @param {Array} combinations\n * @param {Function} callback\n * @param {string|undefined} action\n * @returns void\n */\n self._bindMultiple = function(combinations, callback, action) {\n for (var i = 0; i < combinations.length; ++i) {\n _bindSingle(combinations[i], callback, action);\n }\n };\n\n // start!\n _addEvent(targetElement, 'keypress', _handleKeyEvent);\n _addEvent(targetElement, 'keydown', _handleKeyEvent);\n _addEvent(targetElement, 'keyup', _handleKeyEvent);\n }\n\n /**\n * binds an event to mousetrap\n *\n * can be a single key, a combination of keys separated with +,\n * an array of keys, or a sequence of keys separated by spaces\n *\n * be sure to list the modifier keys first to make sure that the\n * correct key ends up getting bound (the last key in the pattern)\n *\n * @param {string|Array} keys\n * @param {Function} callback\n * @param {string=} action - 'keypress', 'keydown', or 'keyup'\n * @returns void\n */\n Mousetrap.prototype.bind = function(keys, callback, action) {\n var self = this;\n keys = keys instanceof Array ? keys : [keys];\n self._bindMultiple.call(self, keys, callback, action);\n return self;\n };\n\n /**\n * unbinds an event to mousetrap\n *\n * the unbinding sets the callback function of the specified key combo\n * to an empty function and deletes the corresponding key in the\n * _directMap dict.\n *\n * TODO: actually remove this from the _callbacks dictionary instead\n * of binding an empty function\n *\n * the keycombo+action has to be exactly the same as\n * it was defined in the bind method\n *\n * @param {string|Array} keys\n * @param {string} action\n * @returns void\n */\n Mousetrap.prototype.unbind = function(keys, action) {\n var self = this;\n return self.bind.call(self, keys, function() {}, action);\n };\n\n /**\n * triggers an event that has already been bound\n *\n * @param {string} keys\n * @param {string=} action\n * @returns void\n */\n Mousetrap.prototype.trigger = function(keys, action) {\n var self = this;\n if (self._directMap[keys + ':' + action]) {\n self._directMap[keys + ':' + action]({}, keys);\n }\n return self;\n };\n\n /**\n * resets the library back to its initial state. this is useful\n * if you want to clear out the current keyboard shortcuts and bind\n * new ones - for example if you switch to another page\n *\n * @returns void\n */\n Mousetrap.prototype.reset = function() {\n var self = this;\n self._callbacks = {};\n self._directMap = {};\n return self;\n };\n\n /**\n * should we stop this event before firing off callbacks\n *\n * @param {Event} e\n * @param {Element} element\n * @return {boolean}\n */\n Mousetrap.prototype.stopCallback = function(e, element) {\n var self = this;\n\n // if the element has the class \"mousetrap\" then no need to stop\n if ((' ' + element.className + ' ').indexOf(' mousetrap ') > -1) {\n return false;\n }\n\n if (_belongsTo(element, self.target)) {\n return false;\n }\n\n // Events originating from a shadow DOM are re-targetted and `e.target` is the shadow host,\n // not the initial event target in the shadow tree. Note that not all events cross the\n // shadow boundary.\n // For shadow trees with `mode: 'open'`, the initial event target is the first element in\n // the event’s composed path. For shadow trees with `mode: 'closed'`, the initial event\n // target cannot be obtained.\n if ('composedPath' in e && typeof e.composedPath === 'function') {\n // For open shadow trees, update `element` so that the following check works.\n var initialEventTarget = e.composedPath()[0];\n if (initialEventTarget !== e.target) {\n element = initialEventTarget;\n }\n }\n\n // stop for input, select, and textarea\n return element.tagName == 'INPUT' || element.tagName == 'SELECT' || element.tagName == 'TEXTAREA' || element.isContentEditable;\n };\n\n /**\n * exposes _handleKey publicly so it can be overwritten by extensions\n */\n Mousetrap.prototype.handleKey = function() {\n var self = this;\n return self._handleKey.apply(self, arguments);\n };\n\n /**\n * allow custom key mappings\n */\n Mousetrap.addKeycodes = function(object) {\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n _MAP[key] = object[key];\n }\n }\n _REVERSE_MAP = null;\n };\n\n /**\n * Init the global mousetrap functions\n *\n * This method is needed to allow the global mousetrap functions to work\n * now that mousetrap is a constructor function.\n */\n Mousetrap.init = function() {\n var documentMousetrap = Mousetrap(document);\n for (var method in documentMousetrap) {\n if (method.charAt(0) !== '_') {\n Mousetrap[method] = (function(method) {\n return function() {\n return documentMousetrap[method].apply(documentMousetrap, arguments);\n };\n } (method));\n }\n }\n };\n\n Mousetrap.init();\n\n // expose mousetrap to the global object\n window.Mousetrap = Mousetrap;\n\n // expose as a common js module\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = Mousetrap;\n }\n\n // expose mousetrap as an AMD module\n if (typeof define === 'function' && define.amd) {\n define(function() {\n return Mousetrap;\n });\n }\n}) (typeof window !== 'undefined' ? window : null, typeof window !== 'undefined' ? document : null);\n","\"use strict\";\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Cursor = void 0;\nvar utils_1 = require(\"./utils\");\nvar MARKER = \"\\0\";\n/**\n * Util for manipulation with textarea content and text selection\n */\nvar Cursor = /** @class */ (function () {\n function Cursor(element) {\n this.element = element;\n this.MARKER = MARKER;\n }\n Object.defineProperty(Cursor.prototype, \"value\", {\n get: function () {\n return this.element.value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Cursor.prototype, \"lines\", {\n /** @returns {Line[]} information about each line of text */\n get: function () {\n return this.value.split('\\n').reduce(function (lines, content, index) {\n var lineNumber = index + 1;\n var isFirstLine = index === 0;\n var startsAt = lines.map(function (l) { return l.text; }).join('\\n').length + (isFirstLine ? 0 : 1);\n var endsAt = startsAt + (content + '\\n').length - 1;\n return __spreadArray(__spreadArray([], lines, true), [{ text: content, lineNumber: lineNumber, startsAt: startsAt, endsAt: endsAt }], false);\n }, []);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Cursor.prototype, \"selection\", {\n /** @returns {Selection} information about current selection */\n get: function () {\n var selectionStart = this.element.selectionStart;\n var selectionEnd = this.element.selectionEnd;\n var selectionDirection = this.element.selectionDirection;\n var text = this.value.slice(selectionStart, selectionEnd);\n var lines = this.lines.filter(function (line) {\n // selection starts inside a line\n return (0, utils_1.isBtwOrEq)(selectionStart, line.startsAt, line.endsAt) ||\n // selection ends inside a line\n (0, utils_1.isBtwOrEq)(selectionEnd, line.startsAt, line.endsAt) ||\n // line inside selection from left\n (0, utils_1.isBtwOrEq)(line.startsAt, selectionStart, selectionEnd) ||\n // line inside selection from right\n (0, utils_1.isBtwOrEq)(line.endsAt, selectionStart, selectionEnd);\n });\n if (selectionStart === selectionEnd) {\n return null;\n }\n return { lines: lines, selectionStart: selectionStart, selectionEnd: selectionEnd, selectionDirection: selectionDirection, text: text };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Cursor.prototype, \"position\", {\n /** @returns {Position} information about current position */\n get: function () {\n var position = this.element.selectionStart;\n var line = this.lines.find(function (line) { return position >= line.startsAt && position <= line.endsAt; });\n return { cursorAt: position, line: line };\n },\n enumerable: false,\n configurable: true\n });\n Cursor.prototype.setValue = function (text) {\n var data = this.execRaw(text);\n // TODO check if there are other way to make it work\n if (process.env.NODE_ENV === 'test') {\n this.element.value = data.text;\n }\n else {\n (0, utils_1.fireInput)(this.element, data.text);\n }\n if (data.selectionStart === null && data.selectionEnd === null) {\n return;\n }\n // if no end of selection or start == end\n if (data.selectionStart !== null && (data.selectionEnd === null || data.selectionStart === data.selectionEnd)) {\n this.element.selectionStart = data.selectionStart;\n this.element.selectionEnd = data.selectionStart;\n }\n else {\n this.element.setSelectionRange(data.selectionStart, data.selectionEnd);\n }\n };\n /**\n * @returns {Line} information about line\n * */\n Cursor.prototype.lineAt = function (lineNumber) {\n var _a;\n return (_a = this.lines[lineNumber - 1]) !== null && _a !== void 0 ? _a : null;\n };\n /**\n * Insert text at the cursor position.\n * if some content is selected will replace it\n */\n Cursor.prototype.insert = function (content) {\n if (!this.selection) {\n this.insertAtCursor(content);\n return;\n }\n var start = this.selection.selectionStart;\n var end = this.selection.selectionEnd;\n var newValue = this.value.slice(0, start) + this.normalizeSelection(content) + this.value.slice(end);\n this.setValue(newValue);\n };\n Cursor.prototype.insertAtCursor = function (content) {\n var cursorAt = this.position.cursorAt;\n var newValue = this.value.slice(0, cursorAt) +\n this.normalizeSelection(content) +\n this.value.slice(cursorAt, this.value.length);\n this.setValue(newValue);\n };\n /**\n * Replace all selected lines\n * if nothing is selected will replace the current line\n *\n * @param callback - The map function will be called once for each selected line and will replace the contents of the line with the result of the call\n * @note line is considered as selected even if it is partially selected\n */\n Cursor.prototype.replaceCurrentLines = function (callback, options) {\n var _this = this;\n var _a, _b;\n var _c = (options !== null && options !== void 0 ? options : {}).selectReplaced, selectReplaced = _c === void 0 ? false : _c;\n var selectedLines = (_b = (_a = this.selection) === null || _a === void 0 ? void 0 : _a.lines) !== null && _b !== void 0 ? _b : [this.lineAt(this.position.line.lineNumber)];\n var content = selectedLines\n .map(function (line, index) { return callback.call(_this, line, index, selectedLines); })\n .filter(function (ctn) { return ctn !== null; }) // delete line if null\n .join('\\n');\n var start = selectedLines[0].startsAt;\n var end = selectedLines[selectedLines.length - 1].endsAt;\n var newValue = this.value.slice(0, start) +\n this.normalizeSelection(content, selectReplaced ? 'SELECT_ALL' : 'TO_END') +\n this.value.slice(end);\n this.setValue(newValue);\n };\n /**\n * TODO\n * replace\n */\n Cursor.prototype.replaceLine = function (lineNumber, content) {\n var line = this.lineAt(lineNumber);\n if (!line) {\n console.error('Unknown line number: ' + lineNumber);\n return;\n }\n var start = line.startsAt;\n var end = line.endsAt;\n if (content === null) {\n // line should be removed\n this.setValue(this.value.slice(0, start - 1) + MARKER + this.value.slice(end));\n return;\n }\n var newValue = this.value.slice(0, start) + this.normalizeSelection(content) + this.value.slice(end);\n this.setValue(newValue);\n };\n /**\n * Wraps selection inside markup\n */\n Cursor.prototype.wrap = function (markup, options) {\n var _a, _b, _c, _d;\n var _e = options !== null && options !== void 0 ? options : {}, _f = _e.unwrap, unwrap = _f === void 0 ? true : _f, _g = _e.placeholder, placeholder = _g === void 0 ? '' : _g;\n var _h = Array.isArray(markup) ? markup : [markup, markup], prefix = _h[0], suffix = _h[1];\n var text = this.value;\n var start = (_b = (_a = this.selection) === null || _a === void 0 ? void 0 : _a.selectionStart) !== null && _b !== void 0 ? _b : this.position.cursorAt;\n var end = (_d = (_c = this.selection) === null || _c === void 0 ? void 0 : _c.selectionEnd) !== null && _d !== void 0 ? _d : this.position.cursorAt;\n if (this.isSelectedWrappedWith(markup) && unwrap) {\n var content_1 = [\n text.slice(0, start - prefix.length),\n MARKER,\n text.slice(start, end),\n MARKER,\n text.slice(end + suffix.length),\n ].join('');\n this.setValue(content_1);\n return;\n }\n var content = [\n //\n text.slice(0, start),\n prefix,\n MARKER,\n text.slice(start, end) || placeholder,\n MARKER,\n suffix,\n text.slice(end),\n ].join('');\n this.setValue(content);\n };\n Cursor.prototype.isSelectedWrappedWith = function (markup) {\n var _a, _b, _c, _d;\n var _e = Array.isArray(markup) ? markup : [markup, markup], prefix = _e[0], suffix = _e[1];\n var start = (_b = (_a = this.selection) === null || _a === void 0 ? void 0 : _a.selectionStart) !== null && _b !== void 0 ? _b : this.position.cursorAt;\n var end = (_d = (_c = this.selection) === null || _c === void 0 ? void 0 : _c.selectionEnd) !== null && _d !== void 0 ? _d : this.position.cursorAt;\n if (start - prefix.length < 0 || end - 1 + suffix.length > this.value.length - 1) {\n return false;\n }\n var curPrefix = this.value.slice(start - prefix.length, start);\n var curSuffix = this.value.slice(end, end + suffix.length);\n return curPrefix === prefix && curSuffix === suffix;\n };\n Cursor.prototype.select = function (options) {\n var isRange = function (opt) {\n return (Object.prototype.hasOwnProperty.call(opt, 'start') && Object.prototype.hasOwnProperty.call(opt, 'end'));\n };\n if (isRange(options)) {\n this.element.setSelectionRange(options.start, options.end);\n }\n else {\n this.element.setSelectionRange(this.element.selectionStart + options.fromCurrentStart, this.element.selectionEnd + options.fromCurrentEnd);\n }\n };\n Cursor.prototype.normalizeSelection = function (text, defaultBehavior) {\n if (defaultBehavior === void 0) { defaultBehavior = 'TO_END'; }\n if (text.includes(MARKER)) {\n return text;\n }\n switch (defaultBehavior) {\n case 'TO_START':\n return \"\".concat(MARKER).concat(text);\n case 'TO_END':\n return \"\".concat(text).concat(MARKER);\n case 'SELECT_ALL':\n return \"\".concat(MARKER).concat(text).concat(MARKER);\n }\n };\n Cursor.prototype.execRaw = function (sourceText) {\n var fIndex = sourceText.indexOf(MARKER);\n var lIndex = sourceText.lastIndexOf(MARKER);\n var text = sourceText.replace(new RegExp(MARKER, 'g'), '');\n var selectionStart = null;\n var selectionEnd = null;\n // TODO: handle case with more than 2 markers\n if (fIndex !== -1) {\n selectionStart = fIndex;\n selectionEnd = lIndex === -1 || lIndex === fIndex ? null : lIndex - 1;\n }\n return { text: text, selectionStart: selectionStart, selectionEnd: selectionEnd };\n };\n Cursor.MARKER = MARKER;\n return Cursor;\n}());\nexports.Cursor = Cursor;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bootstrapTextareaMarkdown = void 0;\nvar mousetrap_1 = __importDefault(require(\"mousetrap\"));\nvar commands_1 = require(\"./commands\");\nvar Cursor_new_1 = require(\"./Cursor.new\");\nvar extensions_1 = require(\"./extensions\");\nvar types_1 = require(\"./types\");\nvar utils_1 = require(\"./utils\");\nvar bootstrapTextareaMarkdown = function (textarea, config) {\n if (config === void 0) { config = {}; }\n var cursor = new Cursor_new_1.Cursor(textarea);\n var mousetrap = new mousetrap_1.default(textarea);\n var commands = mergedCommandsList(config.commands);\n var options = __assign(__assign({}, types_1.defaultTextareaMarkdownOptions), config.options);\n var trigger = function (name) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var command = (0, utils_1.findLast)(commands, function (c) { return c.name === name; });\n var keyEvent = isKeyboardArg(args[0]) ? args[0].keyEvent : undefined;\n var handlerArgs = isKeyboardArg(args[0]) ? [] : args;\n if (!command) {\n throw new TypeError(\"Command with name \\\"\".concat(name, \"\\\" is not defined\"));\n }\n // ! disabled only if `false`\n if (command.enable === false) {\n return;\n }\n textarea.focus();\n command.handler.apply(command, __spreadArray([{ textarea: textarea, keyEvent: keyEvent, options: options, cursor: cursor }], (handlerArgs !== null && handlerArgs !== void 0 ? handlerArgs : []), false));\n };\n // subscribe on shortcuts\n commands.forEach(function (command) {\n if (command.shortcut) {\n mousetrap.bind(command.shortcut, function (keyEvent) {\n if (command.shortcutPreventDefault) {\n keyEvent.preventDefault();\n }\n trigger(command.name, { __keyboard: true, keyEvent: keyEvent });\n });\n }\n });\n // bootstrap extensions if enabled, extension can optionally returns a cleanup function, which will be called inside dispose\n var extensions = [\n options.enableIndentExtension && (0, extensions_1.indentExtension)(textarea, options),\n options.enableLinkPasteExtension && (0, extensions_1.linkPasteExtension)(textarea, options),\n options.enablePrefixWrappingExtension && (0, extensions_1.prefixWrappingExtension)(textarea, options),\n options.enableProperLineRemoveBehaviorExtension && (0, extensions_1.properLineRemoveBehaviorExtension)(textarea, options),\n options.enableOrderedListAutoCorrectExtension && (0, extensions_1.orderedListAutoCorrectExtension)(textarea, options),\n ];\n // unsubscribe from all listeners\n var dispose = function () {\n mousetrap.reset();\n extensions.forEach(function (cleanupExtension) { return cleanupExtension instanceof Function && cleanupExtension(); });\n };\n return {\n trigger: trigger,\n dispose: dispose,\n cursor: cursor,\n };\n};\nexports.bootstrapTextareaMarkdown = bootstrapTextareaMarkdown;\nvar isKeyboardArg = function (arg) {\n return arg !== null && typeof arg === 'object' && arg.__keyboard === true;\n};\nvar mergedCommandsList = function (customCommands) {\n if (customCommands === void 0) { customCommands = []; }\n var commands = __spreadArray([], commands_1.buildInCommands, true);\n customCommands === null || customCommands === void 0 ? void 0 : customCommands.forEach(function (command) {\n if (types_1.BUILT_IN_COMMANDS.includes(command.name)) {\n var commandIndex = commands_1.buildInCommands.findIndex(function (x) { return x.name === command.name; });\n var overrides = {\n name: commands[commandIndex].name,\n handler: commands[commandIndex].handler,\n enable: command.enable,\n shortcut: command.shortcut,\n };\n commands[commandIndex] = overrides;\n }\n else {\n if (!command.handler || !(command.handler instanceof Function)) {\n throw new TypeError('Custom command should have a handler function');\n }\n commands.push(command);\n }\n });\n return commands;\n};\n","\"use strict\";\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildInCommands = void 0;\nvar handlers_1 = require(\"./handlers\");\nvar utils_1 = require(\"./utils\");\nexports.buildInCommands = [\n {\n shortcut: (0, utils_1.metaCombination)('b'),\n handler: handlers_1.boldCommandHandler,\n name: 'bold',\n },\n {\n shortcut: (0, utils_1.metaCombination)('i'),\n handler: handlers_1.italicCommandHandler,\n name: 'italic',\n },\n {\n name: 'link',\n handler: handlers_1.linkCommandHandler,\n },\n {\n name: 'image',\n handler: handlers_1.imageCommandHandler,\n },\n {\n name: 'unordered-list',\n handler: handlers_1.unorderedListCommandHandler,\n },\n {\n name: 'ordered-list',\n handler: handlers_1.orderedListCommandHandler,\n },\n {\n name: 'code-block',\n handler: handlers_1.codeBlockCommandHandler,\n },\n {\n name: 'code-inline',\n handler: handlers_1.codeInlineCommandHandler,\n },\n {\n name: 'code',\n handler: handlers_1.codeCommandHandler,\n },\n {\n name: 'block-quotes',\n handler: handlers_1.blockQuotesCommandHandler,\n },\n {\n shortcut: __spreadArray(__spreadArray([], (0, utils_1.metaCombination)('shift', 'x'), true), ['alt+shift+f5'], false),\n name: 'strike-through',\n handler: handlers_1.strikeThroughCommandHandler,\n },\n {\n name: 'h1',\n handler: (0, handlers_1.createHeadlineCommandHandler)(1),\n },\n {\n name: 'h2',\n handler: (0, handlers_1.createHeadlineCommandHandler)(2),\n },\n {\n name: 'h3',\n handler: (0, handlers_1.createHeadlineCommandHandler)(3),\n },\n {\n name: 'h4',\n handler: (0, handlers_1.createHeadlineCommandHandler)(4),\n },\n {\n name: 'h5',\n handler: (0, handlers_1.createHeadlineCommandHandler)(5),\n },\n {\n name: 'h6',\n handler: (0, handlers_1.createHeadlineCommandHandler)(6),\n },\n];\n","\"use strict\";\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.orderedListAutoCorrectExtension = exports.properLineRemoveBehaviorExtension = exports.prefixWrappingExtension = exports.indentExtension = exports.linkPasteExtension = void 0;\nvar mousetrap_1 = __importDefault(require(\"mousetrap\"));\nvar Cursor_new_1 = require(\"./Cursor.new\");\nvar utils_1 = require(\"./utils\");\n/**\n * Handle the paste event, if the pasted text is a URL and something is selected, it will be converted to link/image markup.\n */\nvar linkPasteExtension = function (textarea) {\n var cursor = new Cursor_new_1.Cursor(textarea);\n var pasteListener = function (event) {\n var _a;\n var LINK_MARKUP_RE = /\\[[^\\]]*\\]\\([^)]*\\)/g;\n var clipboard = (_a = event === null || event === void 0 ? void 0 : event.clipboardData) === null || _a === void 0 ? void 0 : _a.getData('text');\n // checks if selected is already inside link or image markup\n var isSelectedInLinkMarkup = (function () {\n if (!cursor.selection) {\n return false;\n }\n // get all links markup ranges\n var linkMarkupRangeList = Array.from(cursor.value.matchAll(LINK_MARKUP_RE)).map(function (match) { return [match.index, match.index + match[0].length]; });\n // check if selected text is inside any of those ranges\n return linkMarkupRangeList.some(function (_a) {\n var start = _a[0], end = _a[1];\n return (0, utils_1.isBtwOrEq)(cursor.selection.selectionStart, start, end) ||\n (0, utils_1.isBtwOrEq)(cursor.selection.selectionEnd, start, end);\n });\n })();\n // eslint-disable-next-line no-debugger\n debugger;\n var _isURL = utils_1.isURL;\n if (\n // make sure there is something on the clipboard\n !clipboard ||\n // make sure there is url on the clipboard\n !(0, utils_1.isURL)(clipboard) ||\n // make sure there something is selected\n !cursor.selection ||\n // make selected text is not a URL\n (0, utils_1.isURL)(cursor.selection.text) ||\n // make sure that selected is not inside link/image markup\n isSelectedInLinkMarkup) {\n return;\n }\n // prevent default paste behavior\n event === null || event === void 0 ? void 0 : event.preventDefault();\n // workaround to avoid code copypaste\n if ((0, utils_1.isImageURL)(clipboard)) {\n cursor.insert(\"![\".concat(cursor.selection.text, \"](\").concat(clipboard, \") \").concat(Cursor_new_1.Cursor.MARKER));\n }\n else {\n cursor.insert(\"[\".concat(cursor.selection.text, \"](\").concat(clipboard, \") \").concat(Cursor_new_1.Cursor.MARKER));\n }\n };\n textarea.addEventListener('paste', pasteListener);\n return function () { return textarea.removeEventListener('paste', pasteListener); };\n};\nexports.linkPasteExtension = linkPasteExtension;\n/**\n * Handle `tab`/`shift+tab` combination. Will insert or remove an intend depends on selection\n */\nvar indentExtension = function (textarea) {\n var mousetrap = (0, mousetrap_1.default)(textarea);\n var cursor = new Cursor_new_1.Cursor(textarea);\n mousetrap.bind('tab', function (event) {\n event === null || event === void 0 ? void 0 : event.preventDefault();\n var indent = ' '.repeat(4);\n if (!cursor.selection) {\n // If nothing is selected simply add Indent at the current position\n cursor.insert(\"\".concat(indent).concat(Cursor_new_1.Cursor.MARKER));\n }\n else {\n // If user is select line or lines - add Indent for each of this selected line, and keep selection\n cursor.replaceCurrentLines(function (line) { return indent + line.text; }, { selectReplaced: true });\n }\n });\n mousetrap.bind('shift+tab', function (event) {\n event === null || event === void 0 ? void 0 : event.preventDefault();\n cursor.replaceCurrentLines(function (line) { return line.text.replace(/\\s{0,4}/, ''); }, {\n // select lines if something was selected\n selectReplaced: Boolean(cursor.selection),\n });\n });\n return function () { return mousetrap.reset(); };\n};\nexports.indentExtension = indentExtension;\n/**\n * Handle next-line event. Will wrap current list sequence if needed\n */\nvar prefixWrappingExtension = function (textarea, options) {\n var cursor = new Cursor_new_1.Cursor(textarea);\n var ensureRegExp = function (value) {\n return value instanceof RegExp ? value : new RegExp((0, utils_1.escapeRegExp)(value));\n };\n var getLineRegExp = function (prefixRe) { return new RegExp(\"^\\\\s*(\".concat(prefixRe.source, \").*$\")); };\n var toConfig = function (value) {\n return typeof value === 'string' ? { prefix: value, prefixPattern: ensureRegExp(value) } : value;\n };\n var getIndent = function (text) { var _a, _b; return ' '.repeat((_b = (_a = text.match(/^\\s*/)) === null || _a === void 0 ? void 0 : _a[0].length) !== null && _b !== void 0 ? _b : 0); };\n var customConfigs = options.customPrefixWrapping.map(toConfig);\n var buildInConfigs = [\n {\n prefix: \"\".concat(options.preferredUnorderedListSyntax, \" \"),\n shouldBreakIfEmpty: true,\n shouldSaveIndent: true,\n },\n {\n prefixPattern: /(\\d+\\.){1,2}\\s+/,\n prefix: function (line) { var _a, _b; return (0, utils_1.getIncrementedOrderedListPrefix)((_b = (_a = /^(\\s*((\\d+\\.){1,2})\\s+.*)$/.exec(line.text)) === null || _a === void 0 ? void 0 : _a[2]) !== null && _b !== void 0 ? _b : '') + ' '; },\n shouldBreakIfEmpty: true,\n shouldSaveIndent: true,\n },\n ];\n var configs = __spreadArray(__spreadArray([], customConfigs, true), buildInConfigs, true);\n var keydownListener = function (event) {\n if (event.code !== 'Enter') {\n return;\n }\n // this code bellow should be executed before default behavior.\n // entering line – is line on which the Enter was pressed\n var enteringLine = cursor.lineAt(cursor.position.line.lineNumber);\n var strictConfigs = configs.map(function (config) {\n var _a;\n var prefix = config.prefix instanceof Function ? config.prefix(enteringLine) : config.prefix;\n var pattern = ensureRegExp((_a = config.prefixPattern) !== null && _a !== void 0 ? _a : prefix);\n var shouldBreak = config.shouldBreakIfEmpty === false ? false : !enteringLine.text.replace(pattern, '').trim();\n var shouldSaveIndent = config.shouldSaveIndent !== false;\n return { prefix: prefix, pattern: pattern, shouldBreak: shouldBreak, shouldSaveIndent: shouldSaveIndent };\n });\n var matched = strictConfigs.find(function (_a) {\n var pattern = _a.pattern;\n return getLineRegExp(pattern).test(enteringLine.text);\n });\n if (!matched) {\n // no matches\n return;\n }\n var prefix = matched.prefix, shouldBreak = matched.shouldBreak, shouldSaveIndent = matched.shouldSaveIndent;\n if (shouldBreak) {\n // for a list line without content remove prefix of this line before default behavior\n cursor.replaceLine(enteringLine.lineNumber, '');\n return;\n }\n event === null || event === void 0 ? void 0 : event.preventDefault();\n // if shouldSaveIndent need to wrap prefix within intent of entering line\n var indent = shouldSaveIndent ? getIndent(enteringLine.text) : '';\n cursor.insert(\"\\n\".concat(indent).concat(prefix).concat(Cursor_new_1.Cursor.MARKER));\n };\n textarea.addEventListener('keydown', keydownListener);\n return function () { return textarea.removeEventListener('keydown', keydownListener); };\n};\nexports.prefixWrappingExtension = prefixWrappingExtension;\nvar properLineRemoveBehaviorExtension = function (textarea) {\n var cursor = new Cursor_new_1.Cursor(textarea);\n var mousetrap = (0, mousetrap_1.default)(textarea);\n mousetrap.bind((0, utils_1.metaCombination)('backspace'), function (event) {\n if (cursor.position.line.text === '') {\n event.preventDefault();\n cursor.replaceLine(cursor.position.line.lineNumber, null);\n }\n });\n return function () { return mousetrap.reset(); };\n};\nexports.properLineRemoveBehaviorExtension = properLineRemoveBehaviorExtension;\nvar orderedListAutoCorrectExtension = function (textarea) {\n var cursor = new Cursor_new_1.Cursor(textarea);\n // eg: 1)content | 1) content | 1.1)content\n var INVALID_PATTERN = /^\\s*(\\d+(\\.\\d+)?\\.?)\\)\\s*/;\n var handler = function (event) {\n var _a, _b;\n if (event.code !== 'Enter') {\n return;\n }\n var lineText = cursor.position.line.text;\n var match = lineText.match(INVALID_PATTERN);\n if (!match) {\n return;\n }\n event === null || event === void 0 ? void 0 : event.preventDefault();\n var indent = ' '.repeat((_b = (_a = lineText.match(/^\\s*/)) === null || _a === void 0 ? void 0 : _a[0].length) !== null && _b !== void 0 ? _b : 0);\n var orderPrefix = match[1];\n var newLineContent = \"\".concat(indent).concat(orderPrefix, \". \").concat(lineText.slice(match[0].length));\n cursor.replaceLine(cursor.position.line.lineNumber, newLineContent);\n textarea.dispatchEvent(new KeyboardEvent('keydown', event));\n };\n textarea.addEventListener('keydown', handler);\n return function () { return textarea.removeEventListener('keydown', handler); };\n};\nexports.orderedListAutoCorrectExtension = orderedListAutoCorrectExtension;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createHeadlineCommandHandler = exports.strikeThroughCommandHandler = exports.blockQuotesCommandHandler = exports.codeCommandHandler = exports.codeInlineCommandHandler = exports.codeBlockCommandHandler = exports.unorderedListCommandHandler = exports.orderedListCommandHandler = exports.imageCommandHandler = exports.linkCommandHandler = exports.italicCommandHandler = exports.boldCommandHandler = void 0;\nvar utils_1 = require(\"./utils\");\nvar Cursor_new_1 = require(\"./Cursor.new\");\nvar boldCommandHandler = function (_a) {\n var cursor = _a.cursor, _b = _a.options, preferredBoldSyntax = _b.preferredBoldSyntax, boldPlaceholder = _b.boldPlaceholder;\n cursor.wrap(preferredBoldSyntax, { placeholder: boldPlaceholder });\n};\nexports.boldCommandHandler = boldCommandHandler;\nvar italicCommandHandler = function (_a) {\n var cursor = _a.cursor, _b = _a.options, preferredItalicSyntax = _b.preferredItalicSyntax, italicPlaceholder = _b.italicPlaceholder;\n cursor.wrap(preferredItalicSyntax, { placeholder: italicPlaceholder });\n};\nexports.italicCommandHandler = italicCommandHandler;\nvar linkCommandHandler = function (_a) {\n var _b;\n var options = _a.options, cursor = _a.cursor;\n var linkTextPlaceholder = options.linkTextPlaceholder, linkUrlPlaceholder = options.linkUrlPlaceholder;\n var linkText = ((_b = cursor.selection) === null || _b === void 0 ? void 0 : _b.text) || linkTextPlaceholder;\n var linkUrl = linkUrlPlaceholder;\n cursor.insert(\"[\".concat(linkText, \"](\").concat(Cursor_new_1.Cursor.MARKER).concat(linkUrl).concat(Cursor_new_1.Cursor.MARKER, \")\"));\n};\nexports.linkCommandHandler = linkCommandHandler;\nvar imageCommandHandler = function (_a) {\n var _b;\n var options = _a.options, cursor = _a.cursor;\n var imageTextPlaceholder = options.imageTextPlaceholder, imageUrlPlaceholder = options.imageUrlPlaceholder;\n var imageText = ((_b = cursor.selection) === null || _b === void 0 ? void 0 : _b.text) || imageTextPlaceholder;\n var imageUrl = imageUrlPlaceholder;\n cursor.insert(\"![\".concat(imageText, \"](\").concat(Cursor_new_1.Cursor.MARKER).concat(imageUrl).concat(Cursor_new_1.Cursor.MARKER, \")\"));\n};\nexports.imageCommandHandler = imageCommandHandler;\nvar orderedListCommandHandler = function (_a) {\n var _b, _c;\n var cursor = _a.cursor;\n var re = /(\\d+\\.){1,2}\\s+/;\n var lines = (_c = (_b = cursor.selection) === null || _b === void 0 ? void 0 : _b.lines) !== null && _c !== void 0 ? _c : [cursor.position.line];\n var needUndo = lines.every(function (line) { return re.test(line.text); });\n cursor.replaceCurrentLines(function (line, index) { return (needUndo ? line.text.replace(re, '') : \"\".concat(index + 1, \". \").concat(line.text)); }, {\n selectReplaced: Boolean(cursor.selection),\n });\n};\nexports.orderedListCommandHandler = orderedListCommandHandler;\nvar unorderedListCommandHandler = function (_a) {\n var _b, _c;\n var cursor = _a.cursor, options = _a.options;\n var syntax = options.preferredUnorderedListSyntax;\n var re = new RegExp(\"^\".concat((0, utils_1.escapeRegExp)(syntax), \"\\\\s+\"));\n var lines = (_c = (_b = cursor.selection) === null || _b === void 0 ? void 0 : _b.lines) !== null && _c !== void 0 ? _c : [cursor.position.line];\n var needUndo = lines.every(function (line) { return re.test(line.text); });\n cursor.replaceCurrentLines(function (line) { return (needUndo ? line.text.replace(re, '') : \"\".concat(syntax, \" \").concat(line.text)); }, {\n selectReplaced: Boolean(cursor.selection),\n });\n};\nexports.unorderedListCommandHandler = unorderedListCommandHandler;\nvar codeBlockCommandHandler = function (_a) {\n // TODO handle cases when selection start/end located not on start/end of a line\n // TODO: commend code doesn't works properly\n // const startLine = cursor.selection?.lines[0] ?? cursor.position.line;\n // const endLine = cursor.selection?.lines[0];\n // const needNextLineBefore = startLine.startsAt !== 0;\n // const needNextLineAfter = endLine && endLine.lineNumber !== startLine.lineNumber && endLine.endsAt < endLine.text.length;\n var cursor = _a.cursor, codeBlockPlaceholder = _a.options.codeBlockPlaceholder;\n cursor.wrap(['```\\n', '\\n```'], { placeholder: codeBlockPlaceholder });\n};\nexports.codeBlockCommandHandler = codeBlockCommandHandler;\nvar codeInlineCommandHandler = function (_a) {\n var cursor = _a.cursor, codeInlinePlaceholder = _a.options.codeInlinePlaceholder;\n cursor.wrap('`', { placeholder: codeInlinePlaceholder });\n};\nexports.codeInlineCommandHandler = codeInlineCommandHandler;\nvar codeCommandHandler = function (ctx) {\n var _a, _b;\n var selectedLines = (_b = (_a = ctx.cursor.selection) === null || _a === void 0 ? void 0 : _a.lines) !== null && _b !== void 0 ? _b : [];\n if (selectedLines.length > 1) {\n (0, exports.codeBlockCommandHandler)(ctx);\n }\n else {\n (0, exports.codeInlineCommandHandler)(ctx);\n }\n};\nexports.codeCommandHandler = codeCommandHandler;\nvar blockQuotesCommandHandler = function (_a) {\n var cursor = _a.cursor, options = _a.options;\n cursor.replaceCurrentLines(function (line, index, lines) {\n return [\n index === 0 ? '> ' : '',\n index === 0 ? Cursor_new_1.Cursor.MARKER : '',\n line.text.replace(/^>\\s+/, '') || (index === 0 ? options.blockQuotesPlaceholder : ''),\n index === lines.length - 1 ? Cursor_new_1.Cursor.MARKER : '', // selection closing for the last line\n ].join('');\n });\n};\nexports.blockQuotesCommandHandler = blockQuotesCommandHandler;\nvar strikeThroughCommandHandler = function (_a) {\n var cursor = _a.cursor, strikeThroughPlaceholder = _a.options.strikeThroughPlaceholder;\n cursor.wrap('~~', { placeholder: strikeThroughPlaceholder });\n};\nexports.strikeThroughCommandHandler = strikeThroughCommandHandler;\nvar createHeadlineCommandHandler = function (level) {\n return function (_a) {\n var cursor = _a.cursor, options = _a.options;\n var prefix = '#'.repeat((0, utils_1.clamp)(level, 1, 6)) + ' ';\n var headlinePlaceholder = options.headlinePlaceholder;\n var placeholder = headlinePlaceholder instanceof Function ? headlinePlaceholder(level) : headlinePlaceholder;\n var currentLine = cursor.position.line;\n var needUndo = currentLine.text.slice(0, level + 1) === prefix;\n var content = currentLine.text.replace(/^#{0,6}\\s+/, '') || placeholder;\n cursor.replaceLine(currentLine.lineNumber, \"\".concat(needUndo ? '' : prefix).concat(Cursor_new_1.Cursor.MARKER).concat(content).concat(Cursor_new_1.Cursor.MARKER));\n };\n};\nexports.createHeadlineCommandHandler = createHeadlineCommandHandler;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultTextareaMarkdownOptions = exports.BUILT_IN_COMMANDS = void 0;\nexports.BUILT_IN_COMMANDS = [\n 'bold',\n 'italic',\n 'strike-through',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'unordered-list',\n 'ordered-list',\n 'code-block',\n 'code-inline',\n 'code',\n 'link',\n 'image',\n 'block-quotes',\n];\nexports.defaultTextareaMarkdownOptions = {\n preferredUnorderedListSyntax: '-',\n preferredBoldSyntax: '**',\n preferredItalicSyntax: '*',\n enableIndentExtension: true,\n enableLinkPasteExtension: true,\n enablePrefixWrappingExtension: true,\n enableProperLineRemoveBehaviorExtension: true,\n enableOrderedListAutoCorrectExtension: false,\n customPrefixWrapping: [],\n boldPlaceholder: 'bold',\n italicPlaceholder: 'italic',\n strikeThroughPlaceholder: 'strike through',\n codeInlinePlaceholder: 'code',\n codeBlockPlaceholder: 'code block',\n orderedListPlaceholder: 'ordered list',\n unorderedListPlaceholder: 'unordered list',\n headlinePlaceholder: function (lvl) { return \"headline \".concat(lvl); },\n blockQuotesPlaceholder: 'quote',\n linkTextPlaceholder: 'example',\n linkUrlPlaceholder: 'url',\n imageTextPlaceholder: 'example',\n imageUrlPlaceholder: 'image.png',\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isImageURL = exports.isURL = exports.escapeRegExp = exports.findTextArea = exports.isRefObject = exports.getIncrementedOrderedListPrefix = exports.fireInput = exports.isBtwOrEq = exports.trimChars = exports.findLast = exports.clamp = exports.metaCombination = void 0;\nvar metaCombination = function () {\n var keys = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n keys[_i] = arguments[_i];\n }\n return [\"command+\".concat(keys.join('+')), \"ctrl+\".concat(keys.join('+'))];\n};\nexports.metaCombination = metaCombination;\nvar clamp = function (val, min, max) { return Math.min(Math.max(min, val), max); };\nexports.clamp = clamp;\nvar findLast = function (array, predicate) {\n var curIndex = array.length;\n while (curIndex--) {\n if (predicate(array[curIndex], curIndex, array))\n return array[curIndex];\n }\n return undefined;\n};\nexports.findLast = findLast;\nvar trimChars = function (text, chars) {\n return text.replace(new RegExp('^[' + escapeRegExp(chars) + ']+|[' + chars + ']+$', 'g'), '');\n};\nexports.trimChars = trimChars;\nvar isBtwOrEq = function (value, a, b) {\n return value >= Math.min(a, b) && value <= Math.max(a, b);\n};\nexports.isBtwOrEq = isBtwOrEq;\nvar browserSupportsTextareaTextNodes;\nfunction canManipulateViaTextNodes(input) {\n if (input.nodeName !== 'TEXTAREA') {\n return false;\n }\n if (typeof browserSupportsTextareaTextNodes === 'undefined') {\n var textarea = document.createElement('textarea');\n textarea.value = '1';\n browserSupportsTextareaTextNodes = Boolean(textarea.firstChild);\n }\n return browserSupportsTextareaTextNodes;\n}\n/**\n * @param {HTMLTextAreaElement|HTMLInputElement} input\n * @param {string} value\n * @returns {void}\n */\nfunction fireInput(input, value) {\n // clear value before insertion\n // Most of the used APIs only work with the field selected\n input.focus();\n // since we replace all content\n input.select();\n // Webkit + Edge\n var isSuccess = document.execCommand && document.execCommand('insertText', false, value);\n if (!isSuccess) {\n var start = input.selectionStart;\n var end = input.selectionEnd;\n // Firefox (non-standard method)\n if (typeof input.setRangeText === 'function') {\n input.setRangeText(value);\n }\n else {\n //\n // To make a change we just need a Range, not a Selection\n var range = document.createRange();\n var textNode = document.createTextNode(value);\n if (canManipulateViaTextNodes(input)) {\n var node = input.firstChild;\n // If textarea is empty, just insert the text\n if (!node) {\n input.appendChild(textNode);\n }\n else {\n // Otherwise we need to find a nodes for start and end\n var offset = 0;\n var startNode = null;\n var endNode = null;\n while (node && (startNode === null || endNode === null)) {\n var nodeLength = node.nodeValue.length;\n // if start of the selection falls into current node\n if (start >= offset && start <= offset + nodeLength) {\n range.setStart((startNode = node), start - offset);\n }\n // if end of the selection falls into current node\n if (end >= offset && end <= offset + nodeLength) {\n range.setEnd((endNode = node), end - offset);\n }\n offset += nodeLength;\n node = node.nextSibling;\n }\n // If there is some text selected, remove it as we should replace it\n if (start !== end) {\n range.deleteContents();\n }\n }\n }\n // If the node is a textarea and the range doesn't span outside the element\n //\n // Get the commonAncestorContainer of the selected range and test its type\n // If the node is of type `#text` it means that we're still working with text nodes within our textarea element\n // otherwise, if it's of type `#document` for example it means our selection spans outside the textarea.\n if (canManipulateViaTextNodes(input) && range.commonAncestorContainer.nodeName === '#text') {\n // Finally insert a new node. The browser will automatically split start and end nodes into two if necessary\n range.insertNode(textNode);\n }\n else {\n // If the node is not a textarea or the range spans outside a textarea the only way is to replace the whole value\n input.value = value;\n }\n }\n // Notify any possible listeners of the change\n var e = document.createEvent('UIEvent');\n e.initEvent('input', true, false);\n input.dispatchEvent(e);\n }\n}\nexports.fireInput = fireInput;\n/**\n * 1. -> 2.\n * 1.1. -> 1.2.\n */\nvar getIncrementedOrderedListPrefix = function (prefix) {\n var parts = (0, exports.trimChars)(prefix.trim(), '.').split('.');\n var currentCount = parseInt(parts[parts.length - 1]);\n if (parts.length === 1) {\n return \"\".concat(currentCount + 1, \".\");\n }\n return \"\".concat(parts.slice(0, -1).join('.'), \".\").concat(currentCount + 1, \".\");\n};\nexports.getIncrementedOrderedListPrefix = getIncrementedOrderedListPrefix;\nvar isRefObject = function (ref) {\n return ref !== null && typeof ref === 'object';\n};\nexports.isRefObject = isRefObject;\n/** Will try to find textarea or throws an Error */\nvar findTextArea = function (element) {\n var CHILDREN_ERROR_MSG = 'TextareaMarkdown wrapper: child element must be instance of HTMLTextAreaElement or container with an textarea element';\n if (!element) {\n throw new TypeError(CHILDREN_ERROR_MSG);\n }\n if (element instanceof HTMLTextAreaElement) {\n return element;\n }\n var queried = element.querySelector('textarea');\n if (queried instanceof HTMLTextAreaElement) {\n return queried;\n }\n throw new TypeError(CHILDREN_ERROR_MSG);\n};\nexports.findTextArea = findTextArea;\nfunction escapeRegExp(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n}\nexports.escapeRegExp = escapeRegExp;\nvar isURL = function (value) {\n try {\n return typeof value === 'string' && Boolean(new URL(value));\n }\n catch (error) {\n return false;\n }\n};\nexports.isURL = isURL;\nvar isImageURL = function (value) {\n return (0, exports.isURL)(value) && value.match(/\\.(jpeg|jpg|gif|png)$/) !== null;\n};\nexports.isImageURL = isImageURL;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export class LiteYTEmbed extends HTMLElement {\n constructor() {\n super();\n this.isIframeLoaded = false;\n this.setupDom();\n }\n static get observedAttributes() {\n return ['videoid', 'playlistid'];\n }\n connectedCallback() {\n this.addEventListener('pointerover', LiteYTEmbed.warmConnections, {\n once: true,\n });\n this.addEventListener('click', () => this.addIframe());\n }\n get videoId() {\n return encodeURIComponent(this.getAttribute('videoid') || '');\n }\n set videoId(id) {\n this.setAttribute('videoid', id);\n }\n get playlistId() {\n return encodeURIComponent(this.getAttribute('playlistid') || '');\n }\n set playlistId(id) {\n this.setAttribute('playlistid', id);\n }\n get videoTitle() {\n return this.getAttribute('videotitle') || 'Video';\n }\n set videoTitle(title) {\n this.setAttribute('videotitle', title);\n }\n get videoPlay() {\n return this.getAttribute('videoPlay') || 'Play';\n }\n set videoPlay(name) {\n this.setAttribute('videoPlay', name);\n }\n get videoStartAt() {\n return this.getAttribute('videoStartAt') || '0';\n }\n get autoLoad() {\n return this.hasAttribute('autoload');\n }\n get noCookie() {\n return this.hasAttribute('nocookie');\n }\n get posterQuality() {\n return this.getAttribute('posterquality') || 'hqdefault';\n }\n get posterLoading() {\n return (this.getAttribute('posterloading') ||\n 'lazy');\n }\n get params() {\n return `start=${this.videoStartAt}&${this.getAttribute('params')}`;\n }\n set params(opts) {\n this.setAttribute('params', opts);\n }\n setupDom() {\n const shadowDom = this.attachShadow({ mode: 'open' });\n let nonce = '';\n if (window.liteYouTubeNonce) {\n nonce = `nonce=\"${window.liteYouTubeNonce}\"`;\n }\n shadowDom.innerHTML = `\n \n
\n \n \n \n \n \n \n
\n `;\n this.domRefFrame = shadowDom.querySelector('#frame');\n this.domRefImg = {\n fallback: shadowDom.querySelector('#fallbackPlaceholder'),\n webp: shadowDom.querySelector('#webpPlaceholder'),\n jpeg: shadowDom.querySelector('#jpegPlaceholder'),\n };\n this.domRefPlayButton = shadowDom.querySelector('#playButton');\n }\n setupComponent() {\n this.initImagePlaceholder();\n this.domRefPlayButton.setAttribute('aria-label', `${this.videoPlay}: ${this.videoTitle}`);\n this.setAttribute('title', `${this.videoPlay}: ${this.videoTitle}`);\n if (this.autoLoad || this.isYouTubeShort()) {\n this.initIntersectionObserver();\n }\n }\n attributeChangedCallback(name, oldVal, newVal) {\n switch (name) {\n case 'videoid':\n case 'playlistid':\n case 'videoTitle':\n case 'videoPlay': {\n if (oldVal !== newVal) {\n this.setupComponent();\n if (this.domRefFrame.classList.contains('activated')) {\n this.domRefFrame.classList.remove('activated');\n this.shadowRoot.querySelector('iframe').remove();\n this.isIframeLoaded = false;\n }\n }\n break;\n }\n default:\n break;\n }\n }\n addIframe(isIntersectionObserver = false) {\n if (!this.isIframeLoaded) {\n let autoplay = isIntersectionObserver ? 0 : 1;\n const wantsNoCookie = this.noCookie ? '-nocookie' : '';\n let embedTarget;\n if (this.playlistId) {\n embedTarget = `?listType=playlist&list=${this.playlistId}&`;\n }\n else {\n embedTarget = `${this.videoId}?`;\n }\n if (this.isYouTubeShort()) {\n this.params = `loop=1&mute=1&modestbranding=1&playsinline=1&rel=0&enablejsapi=1&playlist=${this.videoId}`;\n autoplay = 1;\n }\n const iframeHTML = `\n`;\n this.domRefFrame.insertAdjacentHTML('beforeend', iframeHTML);\n this.domRefFrame.classList.add('activated');\n this.isIframeLoaded = true;\n this.attemptShortAutoPlay();\n this.dispatchEvent(new CustomEvent('liteYoutubeIframeLoaded', {\n detail: {\n videoId: this.videoId,\n },\n bubbles: true,\n cancelable: true,\n }));\n }\n }\n initImagePlaceholder() {\n const posterUrlWebp = `https://i.ytimg.com/vi_webp/${this.videoId}/${this.posterQuality}.webp`;\n const posterUrlJpeg = `https://i.ytimg.com/vi/${this.videoId}/${this.posterQuality}.jpg`;\n this.domRefImg.fallback.loading = this.posterLoading;\n this.domRefImg.webp.srcset = posterUrlWebp;\n this.domRefImg.jpeg.srcset = posterUrlJpeg;\n this.domRefImg.fallback.src = posterUrlJpeg;\n this.domRefImg.fallback.setAttribute('aria-label', `${this.videoPlay}: ${this.videoTitle}`);\n this.domRefImg?.fallback?.setAttribute('alt', `${this.videoPlay}: ${this.videoTitle}`);\n }\n initIntersectionObserver() {\n const options = {\n root: null,\n rootMargin: '0px',\n threshold: 0,\n };\n const observer = new IntersectionObserver((entries, observer) => {\n entries.forEach(entry => {\n if (entry.isIntersecting && !this.isIframeLoaded) {\n LiteYTEmbed.warmConnections();\n this.addIframe(true);\n observer.unobserve(this);\n }\n });\n }, options);\n observer.observe(this);\n }\n attemptShortAutoPlay() {\n if (this.isYouTubeShort()) {\n setTimeout(() => {\n this.shadowRoot\n .querySelector('iframe')\n ?.contentWindow?.postMessage('{\"event\":\"command\",\"func\":\"' + 'playVideo' + '\",\"args\":\"\"}', '*');\n }, 2000);\n }\n }\n isYouTubeShort() {\n return (this.getAttribute('short') === '' &&\n window.matchMedia('(max-width: 40em)').matches);\n }\n static addPrefetch(kind, url) {\n const linkElem = document.createElement('link');\n linkElem.rel = kind;\n linkElem.href = url;\n linkElem.crossOrigin = 'true';\n document.head.append(linkElem);\n }\n static warmConnections() {\n if (LiteYTEmbed.isPreconnected || window.liteYouTubeIsPreconnected)\n return;\n LiteYTEmbed.addPrefetch('preconnect', 'https://i.ytimg.com/');\n LiteYTEmbed.addPrefetch('preconnect', 'https://s.ytimg.com');\n LiteYTEmbed.addPrefetch('preconnect', 'https://www.youtube.com');\n LiteYTEmbed.addPrefetch('preconnect', 'https://www.google.com');\n LiteYTEmbed.addPrefetch('preconnect', 'https://googleads.g.doubleclick.net');\n LiteYTEmbed.addPrefetch('preconnect', 'https://static.doubleclick.net');\n LiteYTEmbed.isPreconnected = true;\n window.liteYouTubeIsPreconnected = true;\n }\n}\nLiteYTEmbed.isPreconnected = false;\ncustomElements.define('lite-youtube', LiteYTEmbed);\n//# sourceMappingURL=lite-youtube.js.map","import htmx from 'htmx.org/dist/htmx.js';\nimport hyperscript from 'hyperscript.org';\nimport { Application } from \"@hotwired/stimulus\"\nimport { definitionsFromContext } from \"@hotwired/stimulus-webpack-helpers\"\nimport 'lazysizes';\nimport '@justinribeiro/lite-youtube'\n\n// need to do this to please content security policy\n// https://github.com/bigskysoftware/htmx/issues/862\nhtmx.config.includeIndicatorStyles = false\n\nwindow.htmx = htmx\nwindow._hyperscript = hyperscript\nwindow._hyperscript.browserInit()\n\n// this is kinda lame since that means that htmx will never execute any new js\n// however that's the closest we can get to turbo behavior which is smart enough\n// to only load scripts it has not seen before or reload the page if the same\n// script changes\nhtmx.config.allowScriptTags = false;\n\nwindow.Stimulus = Application.start()\nconst context = require.context(\"./controllers\", true, /\\.js$/)\nStimulus.load(definitionsFromContext(context))\n","/*\nStimulus Webpack Helpers 1.0.0\nCopyright © 2021 Basecamp, LLC\n */\nfunction definitionsFromContext(context) {\n return context.keys()\n .map((key) => definitionForModuleWithContextAndKey(context, key))\n .filter((value) => value);\n}\nfunction definitionForModuleWithContextAndKey(context, key) {\n const identifier = identifierForContextKey(key);\n if (identifier) {\n return definitionForModuleAndIdentifier(context(key), identifier);\n }\n}\nfunction definitionForModuleAndIdentifier(module, identifier) {\n const controllerConstructor = module.default;\n if (typeof controllerConstructor == \"function\") {\n return { identifier, controllerConstructor };\n }\n}\nfunction identifierForContextKey(key) {\n const logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[_-]controller\\..+?)$/) || [])[1];\n if (logicalName) {\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n }\n}\n\nexport { definitionForModuleAndIdentifier, definitionForModuleWithContextAndKey, definitionsFromContext, identifierForContextKey };\n"],"names":["reloadPage","window","location","reload","reportError","err","payload","explanation","htmx","trigger","static","action","String","prompt","promptField","run","event","preventDefault","extraFields","this","promptValue","promptFieldValue","promptResult","confirm","async","name","dataset","url","out","k","match","toPayload","headers","addHeadersStr","document","body","getAttribute","parsed","JSON","parse","e","console","warn","response","fetch","method","stringify","ok","respBody","text","status","json","runAction","actionValue","element","then","copy","connect","timer","addEventListener","clearTimeout","navigator","clipboard","writeText","copyValue","classList","remove","add","setTimeout","toggle","handler","keyCode","ctrlKey","metaKey","disconnect","removeEventListener","message","messageValue","stopPropagation","addNewItem","inner","fragmentItemsContainer","currentImg","currentCaption","seenFirstItem","itemContainer","createElement","className","appendChild","length","captionContainer","p","initHTML","carousel","querySelector","cachedHTML","innerHTML","fragment","id","html","tmpl","content","generateDocumentFragment","Math","random","replace","paragraphs","children","item","img","removeChild","prepend","push","upload","textarea","dispose","cursor","bootstrapTextareaMarkdown","options","enableLinkPasteExtension","enablePrefixWrappingExtension","customPrefixWrapping","div","loader","firstChild","contains","insertTag","tag","placeholder","cmd","wrap","runCmd","uploadValue","uploadFile","file","formData","FormData","append","uploaded_url","uploadFiles","files","promises","type","startsWith","position","line","insert","loadingPlaceholder","prom","resultUrl","value","catch","log","Promise","all","dataTransfer","clipboardData","btn","querySelectorAll","command","bind","showPreview","on","ev","href","detail","target","targetValue","form","submit","show","parentNode","msg","generateToast","success","error","off","focus","hideTarget","Boolean","targetEl","hide","focusValue","hideTargetValue","map","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","code","keys","Object","resolve","module","exports","EventListener","constructor","eventTarget","eventName","eventOptions","unorderedBindings","Set","bindingConnected","binding","bindingDisconnected","delete","handleEvent","extendedEvent","stopImmediatePropagation","assign","immediatePropagationStopped","call","extendEvent","bindings","hasBindings","size","Array","from","sort","left","right","leftIndex","index","rightIndex","Dispatcher","application","eventListenerMaps","Map","started","start","eventListeners","forEach","eventListener","stop","values","reduce","listeners","concat","fetchEventListenerForBinding","clearEventListeners","clearEventListenersForBinding","handleError","removeMappedEventListenerFor","eventListenerMap","fetchEventListenerMapForEventTarget","cacheKey","fetchEventListener","get","createEventListener","set","parts","key","join","defaultActionDescriptorFilters","prevent","self","descriptorPattern","parseEventTarget","eventTargetName","camelize","_","char","toUpperCase","namespaceCamelize","capitalize","charAt","slice","dasherize","toLowerCase","Action","descriptor","schema","tagName","defaultEventNames","getDefaultEventNameForElement","identifier","methodName","keyFilter","token","descriptorString","matches","trim","split","test","parseActionDescriptorString","toString","eventFilter","isFilterTarget","filteres","modifiers","meta","ctrl","alt","shift","modifier","includes","altKey","shiftKey","standardFilter","filter","prototype","hasOwnProperty","keyMappings","params","pattern","RegExp","attributes","typecast","a","button","details","input","select","o_O","Binding","context","willBeInvokedByEvent","applyEventModifiers","invokeWithEvent","controller","actionDescriptorFilters","passes","entries","currentTarget","actionEvent","logDebugActivity","KeyboardEvent","Element","scope","containsElement","ElementObserver","delegate","mutationObserverInit","childList","subtree","elements","mutationObserver","MutationObserver","mutations","processMutations","observe","refresh","pause","callback","takeRecords","matchElementsInTree","has","removeElement","addElement","mutation","processMutation","processAttributeChange","attributeName","processRemovedNodes","removedNodes","processAddedNodes","addedNodes","node","elementAttributeChanged","matchElement","nodes","elementFromNode","processTree","elementIsActive","tree","processor","nodeType","Node","ELEMENT_NODE","isConnected","elementMatched","elementUnmatched","AttributeObserver","elementObserver","selector","hasAttribute","elementMatchedAttribute","elementUnmatchedAttribute","elementAttributeValueChanged","del","prune","Multimap","valuesByKey","hasKey","hasValue","some","getValuesForKey","getKeysForValue","_key","_values","SelectorObserver","matchesByElement","selectorMatchElement","selectorMatched","selectorUnmatched","_attributeName","matchedBefore","StringMapObserver","stringMap","attributeOldValue","knownAttributeNames","refreshAttribute","oldValue","getStringMapKeyForAttribute","stringMapKeyAdded","stringMapValueChanged","stringMapKeyRemoved","currentAttributeNames","recordedAttributeNames","attribute","TokenListObserver","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","unmatchedTokens","matchedTokens","refreshTokensForElement","tokensUnmatched","tokens","tokenMatched","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","max","zip","findIndex","previousToken","currentToken","tokenString","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","WeakMap","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseResult","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","actionAttribute","disconnectAllActions","connectAction","disconnectAction","clear","forToken","ValueObserver","receiver","stringMapObserver","valueDescriptorMap","invokeChangedCallbacksForDefaultValues","invokeChangedCallback","writer","defaultValue","valueDescriptorNameMap","valueDescriptors","undefined","data","rawValue","rawOldValue","changedMethodName","changedMethod","reader","TypeError","descriptors","hasMethodName","TargetObserver","targetsByName","disconnectAllTargets","connectTarget","disconnectTarget","_a","targetConnected","targetDisconnected","readInheritableStaticArrayValues","propertyName","ancestors","getAncestorsForConstructor","definition","isArray","getOwnStaticArrayValues","readInheritableStaticObjectPairs","pairs","getOwnStaticObjectPairs","getPrototypeOf","reverse","OutletObserver","outletsByName","outletElementsByName","selectorObserverMap","outletDefinitions","outletName","observer","dependentContexts","disconnectAllOutlets","_selector","outlet","getOutlet","connectOutlet","getOutletFromMap","disconnectOutlet","hasOutlet","controllerAttribute","outletConnected","outletDisconnected","outlets","getSelectorForOutletName","outletDependencies","dependencies","router","modules","controllerConstructor","dependentControllerIdentifiers","identifiers","contexts","getControllerForElementAndIdentifier","find","Context","functionName","bindingObserver","dispatcher","valueObserver","targetObserver","outletObserver","initialize","parentElement","invokeControllerMethod","args","bless","properties","shadowConstructor","extend","shadowProperties","getOwnKeys","shadowingDescriptor","getOwnPropertyDescriptor","getShadowedDescriptor","getShadowProperties","defineProperties","shadow","blessedProperties","blessing","getBlessedProperties","getOwnPropertySymbols","object","getOwnPropertyNames","extendWithReflect","extended","Reflect","construct","arguments","create","setPrototypeOf","b","testReflectExtension","Module","blessDefinition","contextsByScope","connectedContexts","connectContextForScope","fetchContextForScope","disconnectContextForScope","ClassMap","getDataKey","getAll","getAttributeName","getAttributeNameForKey","DataMap","setAttribute","removeAttribute","Guide","logger","warnedKeysByObject","warnedKeys","attributeValueContainsToken","TargetSet","targetName","targetNames","findTarget","findLegacyTarget","findAll","targets","findAllTargets","findAllLegacyTargets","getSelectorForTargetName","findElement","findAllElements","targetAttributeForScope","getLegacySelectorForTargetName","deprecate","targetDescriptor","targetAttribute","revisedAttributeName","guide","OutletSet","controllerElement","outletNames","findOutlet","findAllOutlets","outletAttributeForScope","queryElements","matchesElement","Scope","classes","closest","controllerSelector","documentScope","isDocumentScope","documentElement","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","scopesByIdentifier","fetchScopesByIdentifierForElement","createScopeForElementAndIdentifier","referenceCount","scopeConnected","scopeDisconnected","Router","scopeObserver","modulesByIdentifier","loadDefinition","unloadIdentifier","connectModule","afterLoad","disconnectModule","getContextForElementAndIdentifier","defaultSchema","enter","tab","esc","space","up","down","home","end","objectFromEntries","c","n","array","memo","v","Application","debug","logFormattedMessage","readyState","register","load","registerActionOption","head","rest","shouldLoad","unload","controllers","onerror","groupCollapsed","groupEnd","parseValueDefinitionPair","typeDefinition","typeFromObject","parseValueTypeConstant","typeObject","defaultValueType","parseValueTypeDefault","default","propertyPath","parseValueTypeObject","typeFromDefaultValue","typeFromConstant","parseValueTypeDefinition","constant","defaultValuesByType","defaultValueForDefinition","hasCustomDefaultValue","readers","writers","valueDescriptorForTokenAndTypeDefinition","Number","boolean","number","string","writeJSON","Controller","_identifier","_application","dispatch","prefix","bubbles","cancelable","CustomEvent","dispatchEvent","blessings","classDefinition","targetDefinition","valueDefinitionPairs","propertyDescriptorMap","result","valueDefinitionPair","valueDescriptor","read","write","propertiesForValueDefinitionPair","outletDefinition","camelizedName","outletController","propertiesForOutletDefinition","Data","EventHandler","Config","index_js","VERSION","BaseComponent","config","super","getElement","_element","_config","_getConfig","DATA_KEY","EVENT_KEY","_queueCallback","isAnimated","executeAfterTransition","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","getInstance","NAME","factory","Manipulator","SelectorEngine","Swipe","DATA_API_KEY","TOUCHEVENT_COMPAT_WAIT","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_DRAG_START","EVENT_LOAD_DATA_API","EVENT_CLICK_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM_IMG","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","KEY_TO_DIRECTION","Default","interval","keyboard","ride","touch","DefaultType","Carousel","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","findOne","_addEventListeners","cycle","next","_slide","nextWhenVisible","hidden","isVisible","prev","triggerTransitionEnd","_clearInterval","_updateInterval","setInterval","_maybeEnableCycle","one","to","items","_getItems","activeIndex","_getItemIndex","_getActive","order","defaultInterval","_keydown","isSupported","_addTouchEventListeners","swipeConfig","leftCallback","_directionToOrder","rightCallback","endCallback","direction","indexOf","_setActiveIndicatorElement","activeIndicator","newActiveIndicator","elementInterval","parseInt","activeElement","isNext","nextElement","getNextActiveElement","nextElementIndex","triggerEvent","relatedTarget","_orderToDirection","defaultPrevented","isCycling","directionalClassName","orderClassName","reflow","completeCallBack","_isAnimated","clearInterval","isRTL","each","getOrCreateInstance","getElementFromSelector","slideIndex","getDataAttribute","carousels","defineJQueryPlugin","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_SHOW","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","SELECTOR_DATA_TOGGLE","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","getSelectorFromElement","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","activeChildren","_getFirstLevelChildren","activeInstance","dimension","_getDimension","style","complete","scrollSize","getBoundingClientRect","selected","triggerArray","isOpen","delegateTarget","getMultipleElementsFromSelector","elementMap","instance","instanceMap","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","makeEventUid","uid","getElementEvents","bootstrapHandler","fn","hydrateObj","oneOff","apply","bootstrapDelegationHandler","domElements","domElement","findHandler","events","callable","delegationSelector","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","wrapFunction","handlers","previousFunction","removeHandler","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","inNamespace","isNamespace","elementEvent","keyHandlers","$","getjQuery","jQueryEvent","nativeDispatch","Event","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","evt","obj","_unused","defineProperty","configurable","normalizeData","decodeURIComponent","normalizeDataKey","chr","setDataAttribute","removeDataAttribute","getDataAttributes","bsKeys","pureKey","getSelector","hrefAttribute","parseSelector","child","parents","ancestor","previous","previousElementSibling","nextElementSibling","focusableChildren","focusables","el","isDisabled","jsonConfig","isElement","configTypes","property","expectedTypes","valueType","toType","MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","CSS","escape","getUID","floor","getElementById","getTransitionDurationFromElement","transitionDuration","transitionDelay","getComputedStyle","floatTransitionDuration","parseFloat","floatTransitionDelay","jquery","getClientRects","elementIsVisible","getPropertyValue","closedDetails","summary","disabled","findShadowRoot","attachShadow","getRootNode","root","ShadowRoot","noop","offsetHeight","jQuery","DOMContentLoadedCallbacks","onDOMContentLoaded","dir","plugin","JQUERY_NO_CONFLICT","jQueryInterface","Constructor","noConflict","execute","possibleCallback","transitionElement","waitForTransition","durationPadding","emulatedDuration","called","list","shouldGetNext","isCycleAllowed","listLength","min","Symbol","toStringTag","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","_eventIsPointerPenTouch","clientX","touches","_end","_handleSwipe","_move","absDeltaX","abs","pointerType","maxTouchPoints","onLoad","onLoadHelper","process","processNode","addEventListenerImpl","removeEventListenerImpl","ajax","ajaxHelper","elt","getInputValues","addClass","addClassToElement","removeClass","removeClassFromElement","toggleClass","toggleClassOnElement","takeClass","takeClassForElement","defineExtension","removeExtension","logAll","logNone","historyEnabled","historyCacheSize","refreshOnHistoryMiss","defaultSwapStyle","defaultSwapDelay","defaultSettleDelay","includeIndicatorStyles","indicatorClass","requestClass","addedClass","settlingClass","swappingClass","allowEval","allowScriptTags","inlineScriptNonce","attributesToSettle","withCredentials","timeout","wsReconnectDelay","wsBinaryType","disableSelector","useTemplateFragments","scrollBehavior","defaultFocusScroll","getCacheBusterParam","globalViewTransitions","methodsThatUseUrlParams","selfRequestsOnly","ignoreTitle","scrollIntoViewOnBoost","triggerSpecsCache","parseInterval","internalEval","createEventSource","EventSource","createWebSocket","sock","WebSocket","binaryType","version","internalAPI","addTriggerHandler","bodyContains","canAccessLocalStorage","findThisElement","filterValues","getAttributeValue","getClosestAttributeValue","getClosestMatch","getExpressionVars","getHeaders","getInternalData","getSwapSpecification","getTriggerSpecs","getTarget","makeFragment","mergeObjects","makeSettleInfo","oobSwap","querySelectorExt","selectAndSwap","settleImmediately","shouldCancel","triggerErrorEvent","withExtensions","VERBS","VERB_SELECTOR","verb","HEAD_TAG_REGEX","makeTagRegEx","TITLE_TAG_REGEX","SVG_TAGS_REGEX","global","str","NaN","isNaN","getRawAttribute","qualifiedName","parentElt","getDocument","condition","getAttributeValueWithDisinheritance","initialElement","attributeValue","disinherit","closestAttr","matchesFunction","matchesSelector","msMatchesSelector","mozMatchesSelector","webkitMatchesSelector","oMatchesSelector","getStartTag","exec","parseHTML","resp","depth","responseNode","DOMParser","parseFromString","createDocumentFragment","aFullPageResponse","partialResponse","startTag","maybeCall","func","isType","isFunction","isRawObject","dataProp","toArray","arr","returnArr","i","isScrolledIntoView","rect","elemTop","top","elemBottom","bottom","innerHeight","host","splitOnWhitespace","obj1","obj2","parseJSON","jString","logError","localStorage","setItem","removeItem","normalizePath","path","URL","pathname","search","maybeEval","eval","eltOrSelector","delay","resolveTarget","clazz","substring","endsWith","suffix","normalizeSelector","trimmedSelector","querySelectorAllExt","substr","scanForwardQuery","scanBackwardsQuery","results","compareDocumentPosition","DOCUMENT_POSITION_PRECEDING","DOCUMENT_POSITION_FOLLOWING","arg2","processEventArgs","arg1","arg3","listener","ready","eventArgs","DUMMY_ELT","findAttributeTargets","attrName","attrTarget","targetStr","boosted","shouldSettleAttribute","cloneAttributes","mergeTo","mergeFrom","attr","isInlineSwap","swapStyle","extensions","getExtensions","extension","oobValue","oobElement","settleInfo","oobElementClone","cloneNode","beforeSwapDetails","shouldSwap","swap","elts","handleOutOfBandSwaps","oobSelects","oobSelectValues","oobSelectValue","handlePreservedElements","preservedElt","oldElt","replaceChild","handleAttributes","newNode","normalizedId","normalizedTag","oldNode","newAttributes","tasks","makeAjaxLoadTask","processScripts","processFocus","autofocus","autoFocusedElt","insertNodesBefore","insertBefore","childNodes","TEXT_NODE","COMMENT_NODE","stringHash","hash","charCodeAt","attributeHash","deInitOnHandlers","internalData","onHandlers","handlerInfo","deInitNode","webSocket","close","sseEventSource","listenerInfos","info","cleanUpElement","swapOuterHTML","swapInnerHTML","newElt","eltBeforeNewContent","previousSibling","nextSibling","swapAfterBegin","swapBeforeBegin","swapBeforeEnd","swapAfterEnd","swapDelete","maybeSelectFromResponse","selectOverride","newFragment","ext","newElements","handleSwap","j","findTitle","responseText","title","handleTrigger","xhr","header","triggerBody","getResponseHeader","triggers","eventNames","WHITESPACE","WHITESPACE_OR_COMMA","SYMBOL_START","SYMBOL_CONT","STRINGISH_START","NOT_WHITESPACE","COMBINED_SELECTOR_START","COMBINED_SELECTOR_END","tokenizeString","startPosition","startChar","symbol","isPossibleRelativeReference","last","paramName","maybeGenerateConditional","bracketCount","conditionalSource","conditionFunction","Function","source","consumeUntil","consumeCSSSelector","INPUT_SELECTOR","parseAndCacheTrigger","explicitTrigger","cache","triggerSpecs","initialLength","every","pollInterval","sseEvent","triggerSpec","changed","once","consume","from_arg","throttle","queue","cancelPolling","cancelled","processPolling","spec","nodeData","maybeFilterEvent","makeEvent","isLocalLink","hostname","boostElement","rawAttribute","issueAjaxRequest","ignoreBoostedAnchorCtrlClick","explicitCancel","eltsToListenOn","elementData","eltToListenOn","lastValue","eventData","handledFor","triggeredOnce","eltToListenOnData","delayed","windowIsScrolling","scrollHandler","initScrollHandler","maybeReveal","initHash","processWebSocketInfo","ensureWebSocket","processWebSocketSend","wssSource","retryCount","base_part","port","protocol","socket","maybeCloseWebSocketSource","onclose","getWebSocketReconnectDelay","onopen","transformResponse","webSocketSourceElt","errors","filteredParameters","send","exp","pow","processSSEInfo","processSSESource","processSSESwap","sseSrc","maybeCloseSSESource","sseEventName","sseSourceElt","hasEventSource","sseListener","swapSpec","processSSETrigger","loadImmediately","loaded","processVerbs","explicitAction","observerOptions","threshold","IntersectionObserver","isIntersecting","polling","evalScript","script","newScript","textContent","nonce","shouldProcessHxOn","findHxOnWildcardElements","evaluate","iter","iterateNext","allElements","getElementsByTagName","findElementsToProcess","maybeSetLastButtonClicked","getRelatedFormData","lastButtonClicked","maybeUnsetLastButtonClicked","initButtonTracking","countCurlies","netCurlies","addHxOnEventHandler","processHxOn","hxOnValue","lines","currentEvent","curlyCount","processHxOnWildcard","afterOnPosition","nextChar","initNode","sseInfo","wsInfo","kebabEventName","createEvent","initCustomEvent","ignoreEventForLogging","toDo","errorInfo","eventResult","kebabName","kebabedEvent","onEvent","currentPathForHistory","getHistoryElement","saveToHistoryCache","scroll","historyCache","getItem","splice","newHistoryItem","cause","getCachedHistory","cleanInnerHtmlForHistory","clone","saveCurrentPageToHistory","disableHistoryCache","historyElt","scrollY","history","replaceState","pushUrlIntoHistory","pushState","replaceUrlInHistory","task","loadHistoryFromServer","request","XMLHttpRequest","open","setRequestHeader","onload","historyElement","titleElt","cacheMiss","serverResponse","restoreHistory","cached","scrollTo","addRequestIndicatorClasses","indicators","ic","requestCount","disableElements","disabledElts","disabledElement","removeRequestIndicators","haveSeenNode","processed","isSameNode","shouldInclude","checked","addValueToValues","current","processInputValue","validate","multiple","validateElement","willValidate","checkValidity","validationMessage","validity","formValues","noValidate","formNoValidate","descendant","appendParam","returnStr","realValue","s","encodeURIComponent","urlEncode","makeFormData","getValuesForElement","inputValues","paramsValue","newValues","isAnchorLink","swapInfoOverride","swapInfo","scrollVal","splitSpec","pop","selectorVal","showVal","focusScrollVal","usesFormData","encodeParamsForBody","encodedParameters","encodeParameters","updateScrollState","first","scrollTarget","scrollTop","scrollHeight","showTarget","scrollIntoView","block","behavior","evalAsDefault","varsValues","evaluateValue","toEval","defaultVal","getHXVarsForElement","expressionVars","getHXValsForElement","safelySetHeaderValue","headerValue","getPathFromResponse","responseURL","hasHeader","regexp","getAllResponseHeaders","targetOverride","returnPromise","swapOverride","hierarchyForElt","verifyPath","requestConfig","sameHost","origin","etc","confirmed","reject","promise","_resolve","_reject","responseHandler","handleAjaxResponse","eltData","submitter","buttonPath","buttonVerb","confirmQuestion","triggeringEvent","issueRequest","skipConfirmation","question","syncElt","syncStrategy","queueStrategy","abortable","syncStrings","queuedRequests","endRequestLock","queuedRequest","promptQuestion","promptResponse","rawParameters","allParameters","requestAttrValues","eltIsBoosted","useUrlParams","parameters","unfilteredParameters","credentials","splitPath","pathNoAnchor","anchor","finalPath","overrideMimeType","noHeaders","responseInfo","pathInfo","requestPath","finalRequestPath","hierarchy","responsePath","disableElts","secondaryTriggerElt","parentEltInHierarchy","onabort","ontimeout","lengthComputable","total","determineHistoryUpdates","pathFromHeaders","typeFromHeaders","pushUrl","replaceUrl","elementIsBoosted","saveType","redirectPath","shouldRefresh","historyUpdate","isError","failed","successful","settleResolve","settleReject","doSwap","activeElt","selectionInfo","selectionStart","selectionEnd","newActiveElt","focusOptions","preventScroll","focusScroll","setSelectionRange","finalElt","doSettle","anchorTarget","settleDelay","shouldTransition","transition","startViewTransition","settlePromise","innerDoSwap","swapDelay","extensionBase","init","api","extensionsToReturn","extensionsToIgnore","extensionsForElement","extensionName","isReady","insertIndicatorStyles","insertAdjacentHTML","getMetaConfig","mergeMetaConfig","metaConfig","restoredElts","abort","originalPopstate","onpopstate","state","t","r","browserInit","dynamicResolvers","toFixed","Int","Float","Date","defaultTransition","conversions","isAlpha","isNumeric","isNewline","column","op","u","l","f","S","q","isWhitespace","N","h","C","R","E","T","y","isIdentifierChar","x","g","OP_TABLE","isReservedChar","I","isValidSingleQuoteStringStart","w","d","template","isValidCSSClassChar","isValidCSSIDChar","m","positionString","tokenize","consumed","consumeWhitespace","_lastConsumed","raiseError","raiseParseError","requireOpToken","matchOpToken","matchAnyOpToken","matchAnyToken","matchToken","consumeToken","requireTokenType","matchTokenType","requireToken","peekToken","follows","lastWhitespace","consumeUntilWhitespace","hasMore","lastMatch","programSource","startToken","endToken","pushFollow","popFollow","clearFollows","restoreFollows","runtime","possessivesDisabled","addGrammarElement","requireElement","FEATURES","COMMANDS","parseElement","parseAnyOf","LEAF_EXPRESSIONS","INDIRECT_EXPRESSIONS","unifiedExec","use","GRAMMAR","initElt","sourceFor","lineFor","addCommand","addFeature","isFeature","keyword","addLeafExpression","addIndirectExpression","repeat","createParserContext","parseHyperScript","setParent","commandStart","featureStart","commandBoundary","parseStringTemplate","ensureTerminated","returned","HALT","lexer","parser","isArrayLike","NodeList","HTMLCollection","isIterable","iterator","shouldAutoIterate","implicitLoop","wrapArrays","unwrapAsyncs","asyncWrapper","unifiedEval","handlingFinally","registerHyperTrace","errorHandler","handlingError","locals","errorSymbol","currentException","finallyHandler","onHalt","_scriptAttrs","getScriptAttributes","getScript","HTMLScriptElement","innerText","hyperscriptFeaturesMap","getHyperscriptFeatures","addFeatures","makeContext","getScriptSelector","convertValue","evaluateNoPromise","EventTarget","initElement","initialized","hyperscript","stack","internalDataMap","typeCheck","getElementScope","owner","feature","isReservedWord","isHyperscriptContext","resolveSymbol","me","you","setSymbol","findNext","resolveNext","flatGet","resolveProperty","resolveAttribute","resolveStyle","resolveComputedStyle","assignToNamespace","getHyperTrace","caller","traceMap","trace","print","displayName","padEnd","escapeSelector","nullCheck","isEmpty","doesExist","Document","getEventQueueFor","eventQueues","executing","hyperscriptUrl","currentScript","src","iterators","ctx","sender","_css","relativeToElement","css","selectMatches","numberToken","templateParts","hsQueryId","expr","fields","_namedArgList_","prop","expression","argExressions","hyperfunc","firstIndex","secondIndex","postfix","time","factor","typeName","nullOk","forwardSearch","inSearch","wrapping","inElt","withinElt","operator","rhs","lhs","features","install","execCount","inExpr","elsewhere","startCount","endCount","unbounded","debounceTime","throttleTime","mutationSpec","intersectionSpec","debounced","lastExec","A","O","L","mutationList","now","callingCommand","returnValue","hypername","exposedFunctionNames","jsSource","function","inputs","originalYou","keepExecuting","bubbling","haltDefault","exit","exprs","withExpr","symbolWrite","setter","objectLiteral","trueBranch","falseBranch","indexIdentifier","slot","forever","times","until","whileExpr","loop","eventFired","done","re","flags","conversion","includeStart","includeEnd","toEnd","argExpressions","AbortController","signal","reason","finally","classRefs","attributeRef","cssDeclaration","cssText","elementExpr","classRef","classRef2","display","originalDisplay","removeProperty","visibility","opacity","defaultHideShowStrategy","hideShowStrategies","HTMLDocument","when","forElt","operation","before","after","initalStyles","scrollLeft","topMax","scrollTopMax","leftMax","scrollLeftMax","height","width","scrollWidth","bounds","parentSearch","inline","back","zIndex","MIN_SAFE_INTEGER","URLSearchParams","HTMLElement","outerHTML","internals","Lexer","Tokens","Parser","Runtime","ElementCollection","lazySizes","lazysizes","lazySizesCfg","lazySizesDefaults","lazyClass","loadedClass","loadingClass","preloadClass","errorClass","autosizesClass","fastLoadedClass","iframeLoadMode","srcAttr","srcsetAttr","sizesAttr","minSize","customMedia","expFactor","hFac","loadMode","loadHidden","ricTimeout","throttleDelay","lazySizesConfig","lazysizesConfig","getElementsByClassName","cfg","noSupport","docElem","supportPicture","HTMLPictureElement","_addEventListener","_getAttribute","requestAnimationFrame","requestIdleCallback","regPicture","loadEvents","regClassCache","hasClass","ele","cls","reg","addRemoveLoadEvents","dom","noBubbles","noCancelable","initEvent","updatePolyfill","full","polyfill","picturefill","pf","reevaluate","getCSS","getWidth","offsetWidth","_lazysizesWidth","rAF","firstFns","secondFns","fns","runFns","running","waiting","rafBatch","_lsFlush","rAFIt","simple","that","lastTime","gDelay","rICTimeout","idleCallback","isPriority","debounce","timestamp","wait","later","regImg","regIframe","supportScroll","userAgent","shrinkExpand","currentExpand","isLoading","lowRuns","resetPreloading","isBodyHidden","isNestedVisible","elemExpand","outerRect","visible","eLtop","eLbottom","eLleft","eLright","offsetParent","checkElements","eLlen","autoLoadElem","loadedSomething","elemNegativeExpand","elemExpandVal","beforeExpandVal","defaultExpand","preloadExpand","lazyloadElems","_lazyRace","prematureUnveil","unveilElement","expand","clientHeight","clientWidth","_defEx","eLvW","innerWidth","elvH","isCompleted","preloadElems","preloadAfterLoad","throttledCheckElements","switchLoadingClass","_lazyCache","rafSwitchLoadingClass","rafedSwitchLoadingClass","changeIframeSrc","contentWindow","handleSources","sourceSrcset","lazyUnveil","isAuto","sizes","isImg","srcset","isPicture","firesLoad","nodeName","resetPreloadingTimer","isLoaded","naturalWidth","loading","autoSizer","updateElem","afterScroll","altLoadmodeScrollListner","persisted","loadingElements","checkElems","unveil","_aLSL","sizeElement","sources","len","dataAttr","getSizeElement","debouncedUpdateElementsSizes","autosizesElems","uP","aC","rC","hC","fire","gW","_REVERSE_MAP","_MAP","_KEYCODE_MAP","_SHIFT_MAP","_SPECIAL_ALIASES","platform","Mousetrap","_bindMultiple","unbind","_directMap","reset","_callbacks","stopCallback","_belongsTo","composedPath","initialEventTarget","isContentEditable","handleKey","_handleKey","addKeycodes","documentMousetrap","_addEvent","attachEvent","_characterFromEvent","character","fromCharCode","which","_isModifier","_pickBestAction","_getReverseMap","_getKeyInfo","combination","_keysFromString","targetElement","_resetTimer","_sequenceLevels","_ignoreNextKeyup","_ignoreNextKeypress","_nextExpectedAction","_resetSequences","doNotReset","activeSequences","_getMatches","sequenceName","level","modifiers1","modifiers2","seq","deleteCombo","combo","deleteSequence","_fireCallback","sequence","srcElement","_preventDefault","cancelBubble","_stopPropagation","_handleKeyEvent","_eventModifiers","_bindSequence","_increaseSequence","nextAction","_callbackAndReset","wrappedCallback","_bindSingle","callbacks","maxLevel","processedSequenceCallback","ignoreThisKeypress","combinations","__spreadArray","pack","ar","Cursor","utils_1","MARKER","enumerable","lineNumber","isFirstLine","startsAt","endsAt","selectionDirection","isBtwOrEq","cursorAt","setValue","execRaw","fireInput","lineAt","selection","newValue","normalizeSelection","insertAtCursor","replaceCurrentLines","_b","_this","_c","selectReplaced","selectedLines","ctn","replaceLine","markup","_d","_e","_f","unwrap","_g","_h","isSelectedWrappedWith","content_1","curPrefix","curSuffix","opt","fromCurrentStart","fromCurrentEnd","defaultBehavior","sourceText","fIndex","lIndex","lastIndexOf","__assign","__importDefault","mod","__esModule","mousetrap_1","commands_1","Cursor_new_1","extensions_1","types_1","mousetrap","commands","mergedCommandsList","defaultTextareaMarkdownOptions","_i","findLast","keyEvent","isKeyboardArg","handlerArgs","enable","shortcut","shortcutPreventDefault","__keyboard","enableIndentExtension","indentExtension","linkPasteExtension","prefixWrappingExtension","enableProperLineRemoveBehaviorExtension","properLineRemoveBehaviorExtension","enableOrderedListAutoCorrectExtension","orderedListAutoCorrectExtension","cleanupExtension","arg","customCommands","buildInCommands","BUILT_IN_COMMANDS","commandIndex","overrides","handlers_1","metaCombination","boldCommandHandler","italicCommandHandler","linkCommandHandler","imageCommandHandler","unorderedListCommandHandler","orderedListCommandHandler","codeBlockCommandHandler","codeInlineCommandHandler","codeCommandHandler","blockQuotesCommandHandler","strikeThroughCommandHandler","createHeadlineCommandHandler","pasteListener","LINK_MARKUP_RE","getData","isSelectedInLinkMarkup","matchAll","isURL","isImageURL","indent","ensureRegExp","escapeRegExp","customConfigs","prefixPattern","buildInConfigs","preferredUnorderedListSyntax","shouldBreakIfEmpty","shouldSaveIndent","getIncrementedOrderedListPrefix","configs","keydownListener","enteringLine","strictConfigs","shouldBreak","matched","prefixRe","INVALID_PATTERN","lineText","orderPrefix","newLineContent","preferredBoldSyntax","boldPlaceholder","preferredItalicSyntax","italicPlaceholder","linkTextPlaceholder","linkUrlPlaceholder","linkText","linkUrl","imageTextPlaceholder","imageUrlPlaceholder","imageText","imageUrl","needUndo","syntax","codeBlockPlaceholder","codeInlinePlaceholder","blockQuotesPlaceholder","strikeThroughPlaceholder","clamp","headlinePlaceholder","currentLine","orderedListPlaceholder","unorderedListPlaceholder","lvl","findTextArea","isRefObject","trimChars","val","predicate","curIndex","chars","browserSupportsTextareaTextNodes","canManipulateViaTextNodes","execCommand","setRangeText","range","createRange","textNode","createTextNode","offset","startNode","endNode","nodeLength","nodeValue","setStart","setEnd","deleteContents","commonAncestorContainer","insertNode","currentCount","ref","CHILDREN_ERROR_MSG","HTMLTextAreaElement","queried","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","getter","LiteYTEmbed","isIframeLoaded","setupDom","observedAttributes","connectedCallback","warmConnections","addIframe","videoId","playlistId","videoTitle","videoPlay","videoStartAt","autoLoad","noCookie","posterQuality","posterLoading","opts","shadowDom","mode","liteYouTubeNonce","domRefFrame","domRefImg","fallback","webp","jpeg","domRefPlayButton","setupComponent","initImagePlaceholder","isYouTubeShort","initIntersectionObserver","attributeChangedCallback","oldVal","newVal","shadowRoot","isIntersectionObserver","autoplay","wantsNoCookie","embedTarget","iframeHTML","attemptShortAutoPlay","posterUrlWebp","posterUrlJpeg","entry","unobserve","rootMargin","postMessage","matchMedia","kind","linkElem","rel","crossOrigin","isPreconnected","liteYouTubeIsPreconnected","addPrefetch","customElements","define","_hyperscript","Stimulus","logicalName","identifierForContextKey","definitionForModuleAndIdentifier","definitionForModuleWithContextAndKey","definitionsFromContext"],"sourceRoot":""}