{ "version": 3, "sources": ["../../app/assets/shared/components/audio_player_playback_rate.js", "../../app/assets/shared/components/data_confirm.js", "../../app/assets/shared/components/input_type_number.js", "../../app/assets/shared/components/invalid_input.js", "../../app/assets/shared/components/query_diet.js", "../../app/assets/shared/components/submit_change_after_confirm.js", "../../app/assets/backend/components/click_link_inside.js", "../../app/assets/backend/components/comment.js", "../../../../shared/node_modules/flatpickr/dist/l10n/de.js", "../../app/assets/backend/components/file_input.js", "../../app/assets/backend/components/filter.js", "../../app/assets/backend/components/styled_alert.js", "../../../../shared/node_modules/unpoly/unpoly.js", "../../app/assets/shared/util/environment.js", "../../app/assets/shared/config/unpoly.js", "../../app/assets/backend/config/trix.js", "../../../../shared/node_modules/trix/dist/trix.esm.js", "../../../../shared/node_modules/@rails/activestorage/app/assets/javascripts/activestorage.esm.js", "../../app/assets/shared/components/active_storage.js", "../../../../shared/node_modules/wavesurfer.js/dist/wavesurfer.esm.js", "../../app/assets/shared/util/audio_player.js", "../../app/assets/shared/util/time.js", "../../app/assets/shared/components/audio_player.js", "import-glob:./shared/components/**/*.js", "../../../../shared/node_modules/wavesurfer.js/dist/plugins/record.esm.js", "../../app/assets/shared/util/audio_recorder.js", "../../app/assets/shared/util/duration.js", "../../app/assets/shared/components/audio_recorder.js", "../../app/assets/shared/util/application.js", "../../app/assets/shared/util/timeout.js", "../../app/assets/shared/components/flash_message.js", "import-glob:./backend/components/**/*.js", "../../app/assets/backend/components/confirm_unsaved_changes.js", "../../../../shared/node_modules/ismobilejs/src/isMobile.ts", "../../../../shared/node_modules/flatpickr/dist/esm/types/options.js", "../../../../shared/node_modules/flatpickr/dist/esm/l10n/default.js", "../../../../shared/node_modules/flatpickr/dist/esm/utils/index.js", "../../../../shared/node_modules/flatpickr/dist/esm/utils/dom.js", "../../../../shared/node_modules/flatpickr/dist/esm/utils/formatting.js", "../../../../shared/node_modules/flatpickr/dist/esm/utils/dates.js", "../../../../shared/node_modules/flatpickr/dist/esm/utils/polyfills.js", "../../../../shared/node_modules/flatpickr/dist/esm/index.js", "../../app/assets/backend/components/date_picker.js", "../../app/assets/backend/util/time_ago.js", "../../app/assets/backend/components/relative_time.js", "../../../../shared/node_modules/autosize/dist/autosize.esm.js", "../../app/assets/backend/util/insert_at_caret.js", "../../app/assets/backend/components/templatable.js", "../../app/assets/backend/components/textarea.js"], "sourcesContent": ["up.compiler('.audio-player-playback-rate', (element, { selector }) => {\n\n const playerElement = document.querySelector(selector)\n const field = element.querySelector('input')\n\n function init() {\n field.addEventListener('input', onInput)\n field.value = getPlayer().getPlaybackRate()\n updateLabel()\n }\n\n function onInput() {\n const rate = parseFloat(field.value)\n getPlayer().setPlaybackRate(rate)\n updateLabel()\n }\n\n function updateLabel() {\n element.dataset.value = parseFloat(field.value).toFixed(2)\n }\n\n function getPlayer() {\n return playerElement.getPlayerInstance()\n }\n\n init()\n\n})\n", "up.compiler('[data-confirm]', (element) => {\n\n function onClick(event) {\n const message = element.getAttribute('data-confirm')\n if (!confirm(message)) up.event.halt(event)\n }\n\n element.addEventListener('click', onClick)\n})\n", "up.compiler('input[type=\"number\"]', (element) => {\n\n // Number inputs allow incrementing/decrementing with arrow keys, and support exponential notation\n // (in some browsers even regular letters). We want neither.\n element.addEventListener('keydown', (event) => {\n const key = event.key\n if (key === 'ArrowUp' || key === 'ArrowDown' || (key.length === 1 && !event.ctrlKey && !event.altKey && !key.match(/[0-9\\-+,.]/))) {\n event.preventDefault()\n }\n })\n\n // Some browser (at least Firefox) will increment/decrement a number when using the mouse's scroll wheel\n // above a focused number input. Since this can lead to users changing values by accident, we want to avoid that.\n element.addEventListener('wheel', (event) => {\n if (element.matches(':focus')) {\n event.preventDefault()\n }\n })\n\n})\n", "const invalidClass = 'is-invalid'\nconst selector = ['input', 'textarea', 'select', '.radio-group']\n .map(target => `${target}.${invalidClass}`)\n .join(', ')\n\nup.compiler(selector, (element) => {\n const inputGroup = element.closest('.input-group')\n const formGroup = element.closest('.form-group')\n\n function setInputGroupInvalid(isInvalid) {\n inputGroup?.classList?.toggle(invalidClass, isInvalid)\n }\n\n function unsetOtherFormGroupFieldsInvalid() {\n if (formGroup) {\n Array.from(formGroup.querySelectorAll('.is-invalid')).forEach((element) => {\n element.classList.remove(invalidClass)\n })\n formGroup.querySelector('.invalid-feedback.d-block')?.classList?.remove('d-block')\n }\n }\n\n function unsetInvalid() {\n element.classList.remove(invalidClass)\n unsetOtherFormGroupFieldsInvalid()\n setInputGroupInvalid(false)\n }\n\n setInputGroupInvalid(true)\n element.addEventListener('input', unsetInvalid, { once: true })\n})\n", "up.macro('#query_diet', (element) => {\n\n element.removeAttribute('onclick')\n up.on(element, 'click', () => { element.remove() })\n\n})\n", "up.compiler('[submit-change-after-confirm]', (element, { message }) => {\n\n function onChange(_event) {\n if (!confirm(message)) {\n element.value = element.dataset.previousValue\n } else {\n element.dataset.previousValue = element.value\n up.submit(element)\n }\n }\n\n element.dataset.previousValue = element.value\n up.on(element, 'change', onChange)\n})\n", "// Like up-expand, but will follow the link as a browser action.\n// Intended for download links, where you do not want Unpoly to handle the link.\nup.compiler('[click-link-inside]', (element) => {\n\n element.addEventListener('click', (event) => {\n const linkInside = element.querySelector('a')\n const clickedLink = event.target.closest('a')\n\n if (linkInside && (!clickedLink || linkInside !== clickedLink)) {\n up.event.halt(event)\n linkInside.click()\n }\n })\n\n})\n", "up.compiler('.comment.-done', (element) => {\n\n element.addEventListener('click', () => {\n up.layer.open({\n mode: 'modal',\n size: 'small',\n content: element.innerHTML,\n })\n })\n element.style.cursor = 'zoom-in'\n element.title = 'Kommentar ist als erledigt gekennzeichnet.\\nKlicke, um den Text noch einmal zu lesen.'\n\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.de = {}));\n}(this, (function (exports) { 'use strict';\n\n var fp = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {},\n };\n var German = {\n weekdays: {\n shorthand: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"],\n longhand: [\n \"Sonntag\",\n \"Montag\",\n \"Dienstag\",\n \"Mittwoch\",\n \"Donnerstag\",\n \"Freitag\",\n \"Samstag\",\n ],\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"M\u00E4r\",\n \"Apr\",\n \"Mai\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Okt\",\n \"Nov\",\n \"Dez\",\n ],\n longhand: [\n \"Januar\",\n \"Februar\",\n \"M\u00E4rz\",\n \"April\",\n \"Mai\",\n \"Juni\",\n \"Juli\",\n \"August\",\n \"September\",\n \"Oktober\",\n \"November\",\n \"Dezember\",\n ],\n },\n firstDayOfWeek: 1,\n weekAbbreviation: \"KW\",\n rangeSeparator: \" bis \",\n scrollTitle: \"Zum \u00C4ndern scrollen\",\n toggleTitle: \"Zum Umschalten klicken\",\n time_24hr: true,\n };\n fp.l10ns.de = German;\n var de = fp.l10ns;\n\n exports.German = German;\n exports.default = de;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n", "up.compiler('[file-input]', (element) => {\n\n const input = element.querySelector('input[type=\"file\"]')\n const button = element.querySelector('[file-input--button]')\n const filename = element.querySelector('[file-input--filename]')\n\n const previewImage = element.querySelector('[file-input--preview] img')\n\n function onDragOver(event) {\n event.preventDefault()\n }\n\n function onDrop(event) {\n event.preventDefault()\n input.files = event.dataTransfer.files\n onFilePicked()\n }\n\n function pickFile() {\n input.click()\n }\n\n function onFilePicked() {\n updateFilename()\n updatePreview()\n }\n\n function updateFilename() {\n const filenames = Array.from(input.files).map(file => file.name)\n filename.innerText = filenames.join(', ')\n }\n\n function updatePreview() {\n if (!previewImage) return\n\n if (input.files.length === 1) {\n const file = input.files[0]\n\n readImageAsDataURL(file).then((dataURL) => {\n previewImage.src = dataURL\n })\n } else {\n previewImage.src = '//:0'\n }\n }\n\n function readImageAsDataURL(file) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader()\n reader.addEventListener('load', () => {\n resolve(reader.result)\n })\n reader.readAsDataURL(file)\n })\n }\n\n element.addEventListener('drop', onDrop)\n element.addEventListener('dragover', onDragOver)\n button.addEventListener('click', pickFile)\n input.addEventListener('change', onFilePicked)\n\n})\n", "up.compiler('[filter]', function(filterForm) {\n const resetButton = filterForm.querySelector('[filter--reset]')\n const queryInput = filterForm.querySelector('[filter--query]')\n resetButton.addEventListener('click', function() {\n queryInput.value = ''\n up.emit(queryInput, 'change')\n queryInput.focus()\n })\n})\n", "up.compiler('[styled-alert]', (element, { text }) => {\n\n function onClick() {\n const content = up.element.createFromSelector('div')\n\n up.element.affix(content, 'h4', { text: 'Hinweis' })\n\n text.split(/\\n+/).forEach((line) => up.element.affix(content, 'p', { text: line }))\n\n up.element.affix(content, 'button.btn.btn-light[type=\"button\"][up-dismiss]', { text: 'Schlie\u00DFen' })\n\n up.layer.open({\n mode: 'modal',\n size: 'small',\n content,\n })\n }\n\n element.addEventListener('click', onClick)\n\n})\n", "/******/ (() => { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ([\n/* 0 */,\n/* 1 */\n/***/ (() => {\n\nwindow.up = {\n version: '3.9.2'\n};\n\n\n/***/ }),\n/* 2 */\n/***/ (() => {\n\nup.mockable = function (originalFn) {\n if (window.jasmine) {\n let name = originalFn.name;\n let obj = { [name]: originalFn };\n let mockableFn = function () {\n return obj[name].apply(this, arguments);\n };\n mockableFn.mock = () => spyOn(obj, name);\n return mockableFn;\n }\n else {\n return originalFn;\n }\n};\n\n\n/***/ }),\n/* 3 */\n/***/ (() => {\n\nup.util = (function () {\n function noop() {\n }\n function asyncNoop() {\n return Promise.resolve();\n }\n function memoize(func) {\n let cachedValue, cached;\n return function (...args) {\n if (cached) {\n return cachedValue;\n }\n else {\n cached = true;\n return cachedValue = func.apply(this, args);\n }\n };\n }\n function normalizeURL(url, options) {\n options = newOptions(options, { host: 'cross-domain' });\n const parts = parseURL(url);\n let normalized = '';\n if (options.host === 'cross-domain') {\n options.host = isCrossOrigin(parts);\n }\n if (options.host) {\n normalized += parts.protocol + \"//\" + parts.host;\n }\n let { pathname } = parts;\n if (options.trailingSlash === false && pathname !== '/') {\n pathname = pathname.replace(/\\/$/, '');\n }\n normalized += pathname;\n if (options.search !== false) {\n normalized += parts.search;\n }\n if (options.hash !== false) {\n normalized += parts.hash;\n }\n return normalized;\n }\n function matchURLs(leftURL, rightURL, options) {\n return matchableURL(leftURL, options) === matchableURL(rightURL, options);\n }\n function matchableURL(url, options) {\n if (!url)\n return;\n return normalizeURL(url, { hash: false, trailingSlash: false, ...options });\n }\n function matchableURLPatternAtom(patternAtom) {\n if (patternAtom.endsWith('/'))\n return [patternAtom, patternAtom.slice(0, -1)];\n if (patternAtom.includes('/?'))\n return [patternAtom, patternAtom.replace('/?', '?')];\n if (patternAtom.endsWith('/*'))\n return [patternAtom, patternAtom.slice(0, -2), patternAtom.slice(0, -2) + '?*'];\n return patternAtom;\n }\n const APP_PROTOCOL = location.protocol;\n const APP_HOSTNAME = location.hostname;\n function isCrossOrigin(urlOrAnchor) {\n if (isString(urlOrAnchor) && (urlOrAnchor.indexOf('//') === -1)) {\n return false;\n }\n const parts = parseURL(urlOrAnchor);\n return (APP_HOSTNAME !== parts.hostname) || (APP_PROTOCOL !== parts.protocol);\n }\n function parseURL(url) {\n if (url.pathname) {\n return url;\n }\n let link = document.createElement('a');\n link.href = url;\n return link;\n }\n function normalizeMethod(method) {\n return method ? method.toUpperCase() : 'GET';\n }\n function methodAllowsPayload(method) {\n return (method !== 'GET') && (method !== 'HEAD');\n }\n function iteratee(block) {\n if (isString(block)) {\n return item => item[block];\n }\n else {\n return block;\n }\n }\n function map(list, block) {\n if (list.length === 0) {\n return [];\n }\n block = iteratee(block);\n let mapped = [];\n let i = 0;\n for (let item of list) {\n mapped.push(block(item, i++));\n }\n return mapped;\n }\n function mapObject(array, pairer) {\n const merger = function (object, pair) {\n object[pair[0]] = pair[1];\n return object;\n };\n return map(array, pairer).reduce(merger, {});\n }\n function each(array, block) {\n let i = 0;\n for (let item of array) {\n block(item, i++);\n }\n }\n function isNull(object) {\n return object === null;\n }\n function isUndefined(object) {\n return object === undefined;\n }\n const isDefined = negate(isUndefined);\n function isMissing(object) {\n return isUndefined(object) || isNull(object);\n }\n const isGiven = negate(isMissing);\n function isBlank(value) {\n if (isMissing(value)) {\n return true;\n }\n if (isObject(value) && value[isBlank.key]) {\n return value[isBlank.key]();\n }\n if (isString(value) || isList(value)) {\n return value.length === 0;\n }\n if (isOptions(value)) {\n return Object.keys(value).length === 0;\n }\n return false;\n }\n isBlank.key = 'up.util.isBlank';\n function presence(value, tester = isPresent) {\n if (tester(value)) {\n return value;\n }\n }\n const isPresent = negate(isBlank);\n function isFunction(object) {\n return typeof (object) === 'function';\n }\n function isString(object) {\n return (typeof (object) === 'string') || object instanceof String;\n }\n function isBoolean(object) {\n return (typeof (object) === 'boolean') || object instanceof Boolean;\n }\n function isNumber(object) {\n return (typeof (object) === 'number') || object instanceof Number;\n }\n function isOptions(object) {\n return (typeof (object) === 'object') && !isNull(object) && (isUndefined(object.constructor) || (object.constructor === Object));\n }\n function isObject(object) {\n const typeOfResult = typeof (object);\n return ((typeOfResult === 'object') && !isNull(object)) || (typeOfResult === 'function');\n }\n function isElement(object) {\n return object instanceof Element;\n }\n function isRegExp(object) {\n return object instanceof RegExp;\n }\n function isError(object) {\n return object instanceof Error;\n }\n function isJQuery(object) {\n return up.browser.canJQuery() && object instanceof jQuery;\n }\n function isElementish(object) {\n return !!(object && (object.addEventListener || object[0]?.addEventListener));\n }\n function isPromise(object) {\n return isObject(object) && isFunction(object.then);\n }\n const { isArray } = Array;\n function isFormData(object) {\n return object instanceof FormData;\n }\n function toArray(value) {\n return isArray(value) ? value : copyArrayLike(value);\n }\n function isList(value) {\n return isArray(value) ||\n isNodeList(value) ||\n isArguments(value) ||\n isJQuery(value) ||\n isHTMLCollection(value);\n }\n function isNodeList(value) {\n return value instanceof NodeList;\n }\n function isHTMLCollection(value) {\n return value instanceof HTMLCollection;\n }\n function isArguments(value) {\n return Object.prototype.toString.call(value) === '[object Arguments]';\n }\n function wrapList(value) {\n if (isList(value)) {\n return value;\n }\n else if (isMissing(value)) {\n return [];\n }\n else {\n return [value];\n }\n }\n function copy(value) {\n if (isObject(value) && value[copy.key]) {\n value = value[copy.key]();\n }\n else if (isList(value)) {\n value = copyArrayLike(value);\n }\n else if (isOptions(value)) {\n value = Object.assign({}, value);\n }\n return value;\n }\n function copyArrayLike(arrayLike) {\n return Array.prototype.slice.call(arrayLike);\n }\n copy.key = 'up.util.copy';\n Date.prototype[copy.key] = function () { return new Date(+this); };\n function merge(...sources) {\n return Object.assign({}, ...sources);\n }\n function mergeDefined(...sources) {\n const result = {};\n for (let source of sources) {\n if (source) {\n for (let key in source) {\n const value = source[key];\n if (isDefined(value)) {\n result[key] = value;\n }\n }\n }\n }\n return result;\n }\n function newOptions(object, defaults) {\n if (defaults) {\n return merge(defaults, object);\n }\n else if (object) {\n return copy(object);\n }\n else {\n return {};\n }\n }\n function parseArgIntoOptions(args, argKey) {\n let options = extractOptions(args);\n if (isDefined(args[0])) {\n options = copy(options);\n options[argKey] = args[0];\n }\n return options;\n }\n function findInList(list, tester) {\n tester = iteratee(tester);\n let match;\n for (let element of list) {\n if (tester(element)) {\n match = element;\n break;\n }\n }\n return match;\n }\n function some(list, tester) {\n return !!findResult(list, tester);\n }\n function findResult(list, tester) {\n tester = iteratee(tester);\n let i = 0;\n for (let item of list) {\n const result = tester(item, i++);\n if (result) {\n return result;\n }\n }\n }\n function every(list, tester) {\n tester = iteratee(tester);\n let match = true;\n let i = 0;\n for (let item of list) {\n if (!tester(item, i++)) {\n match = false;\n break;\n }\n }\n return match;\n }\n function compact(array) {\n return filterList(array, isGiven);\n }\n function compactObject(object) {\n return pickBy(object, isGiven);\n }\n function uniq(array) {\n if (array.length < 2) {\n return array;\n }\n return Array.from(new Set(array));\n }\n function uniqBy(array, mapper) {\n if (array.length < 2) {\n return array;\n }\n mapper = iteratee(mapper);\n const seenElements = new Set();\n return filterList(array, function (elem, index) {\n const mapped = mapper(elem, index);\n if (seenElements.has(mapped)) {\n return false;\n }\n else {\n seenElements.add(mapped);\n return true;\n }\n });\n }\n function filterList(list, tester) {\n tester = iteratee(tester);\n const matches = [];\n each(list, function (element, index) {\n if (tester(element, index)) {\n return matches.push(element);\n }\n });\n return matches;\n }\n function reject(list, tester) {\n tester = negate(iteratee(tester));\n return filterList(list, tester);\n }\n function intersect(array1, array2) {\n return filterList(array1, element => contains(array2, element));\n }\n function scheduleTimer(millis, callback) {\n return setTimeout(callback, millis);\n }\n function queueTask(task) {\n return setTimeout(task);\n }\n function last(value) {\n return value[value.length - 1];\n }\n function contains(value, subValue) {\n let indexOf = value.indexOf || Array.prototype.indexOf;\n return indexOf.call(value, subValue) >= 0;\n }\n function containsAll(values, subValues) {\n return every(subValues, (subValue) => contains(values, subValue));\n }\n function objectContains(object, subObject) {\n const reducedValue = pick(object, Object.keys(subObject));\n return isEqual(subObject, reducedValue);\n }\n function pick(object, keys) {\n const filtered = {};\n for (let key of keys) {\n if (key in object) {\n filtered[key] = object[key];\n }\n }\n return filtered;\n }\n function pickBy(object, tester) {\n tester = iteratee(tester);\n const filtered = {};\n for (let key in object) {\n const value = object[key];\n if (tester(value, key, object)) {\n filtered[key] = object[key];\n }\n }\n return filtered;\n }\n function omit(object, keys) {\n return pickBy(object, (_value, key) => !contains(keys, key));\n }\n function unresolvablePromise() {\n return new Promise(noop);\n }\n function remove(array, element) {\n const index = array.indexOf(element);\n if (index >= 0) {\n array.splice(index, 1);\n return element;\n }\n }\n function evalOption(value, ...args) {\n return isFunction(value) ? value(...args) : value;\n }\n function evalAutoOption(value, autoMeans, ...args) {\n value = evalOption(value, ...args);\n if (value === 'auto') {\n value = evalOption(autoMeans, ...args);\n }\n return value;\n }\n const ESCAPE_HTML_ENTITY_MAP = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': '"',\n \"'\": '''\n };\n function escapeHTML(string) {\n return string.replace(/[&<>\"']/g, char => ESCAPE_HTML_ENTITY_MAP[char]);\n }\n function escapeRegExp(string) {\n return string.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n function pluckKey(object, key) {\n const value = object[key];\n delete object[key];\n return value;\n }\n function renameKey(object, oldKey, newKey) {\n return object[newKey] = pluckKey(object, oldKey);\n }\n function extractLastArg(args, tester) {\n if (tester(last(args))) {\n return args.pop();\n }\n }\n function extractCallback(args) {\n return extractLastArg(args, isFunction);\n }\n function extractOptions(args) {\n return extractLastArg(args, isOptions) || {};\n }\n function identity(arg) {\n return arg;\n }\n function sequence(functions) {\n functions = compact(functions);\n return (...args) => map(functions, fn => fn(...args));\n }\n function flatten(array) {\n const flattened = [];\n for (let object of array) {\n if (isList(object)) {\n flattened.push(...object);\n }\n else {\n flattened.push(object);\n }\n }\n return flattened;\n }\n function flatMap(array, block) {\n return flatten(map(array, block));\n }\n function always(promise, callback = identity) {\n return promise.then(callback, callback);\n }\n function newDeferred() {\n let resolveFn;\n let rejectFn;\n const nativePromise = new Promise(function (givenResolve, givenReject) {\n resolveFn = givenResolve;\n rejectFn = givenReject;\n });\n nativePromise.resolve = resolveFn;\n nativePromise.reject = rejectFn;\n return nativePromise;\n }\n function isBasicObjectProperty(k) {\n return Object.prototype.hasOwnProperty(k);\n }\n function isEqual(a, b) {\n if (a?.valueOf) {\n a = a.valueOf();\n }\n if (b?.valueOf) {\n b = b.valueOf();\n }\n if (typeof (a) !== typeof (b)) {\n return false;\n }\n else if (isList(a) && isList(b)) {\n return isEqualList(a, b);\n }\n else if (isObject(a) && a[isEqual.key]) {\n return a[isEqual.key](b);\n }\n else if (isOptions(a) && isOptions(b)) {\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n if (isEqualList(aKeys, bKeys)) {\n return every(aKeys, aKey => isEqual(a[aKey], b[aKey]));\n }\n else {\n return false;\n }\n }\n else {\n return a === b;\n }\n }\n isEqual.key = 'up.util.isEqual';\n function isEqualList(a, b) {\n return (a.length === b.length) && every(a, (elem, index) => isEqual(elem, b[index]));\n }\n const PARSE_TOKEN_PATTERNS = {\n 'space/or': /\\s+(?:or\\s+)?/,\n 'or': /\\s+or\\s+/,\n 'comma': /\\s*,\\s*/\n };\n function parseTokens(value, options = {}) {\n if (isString(value)) {\n value = value.trim();\n if (options.json && /^\\[.*]$/.test(value)) {\n return JSON.parse(value);\n }\n else {\n let separator = options.separator || 'space/or';\n let pattern = PARSE_TOKEN_PATTERNS[separator];\n return value.split(pattern);\n }\n }\n else {\n return wrapList(value);\n }\n }\n function wrapValue(constructor, ...args) {\n return (args[0] instanceof constructor) ? args[0] : new constructor(...args);\n }\n let nextUid = 0;\n function uid() {\n return nextUid++;\n }\n function reverse(list) {\n return copy(list).reverse();\n }\n function replaceValue(value, matchValue, replacementValue) {\n if (value === matchValue) {\n return replacementValue;\n }\n else {\n return value;\n }\n }\n function renameKeys(object, renameKeyFn) {\n const renamed = {};\n for (let key in object) {\n renamed[renameKeyFn(key)] = object[key];\n }\n return renamed;\n }\n function camelToKebabCase(str) {\n return str.replace(/[A-Z]/g, char => '-' + char.toLowerCase());\n }\n function lowerCaseFirst(str) {\n return str[0].toLowerCase() + str.slice(1);\n }\n function upperCaseFirst(str) {\n return str[0].toUpperCase() + str.slice(1);\n }\n function defineDelegates(object, props, targetProvider) {\n for (let prop of props) {\n Object.defineProperty(object, prop, {\n get() {\n const target = targetProvider.call(this);\n let value = target[prop];\n if (isFunction(value)) {\n value = value.bind(target);\n }\n return value;\n },\n set(newValue) {\n const target = targetProvider.call(this);\n target[prop] = newValue;\n }\n });\n }\n }\n function stringifyArg(arg, placeholder = '%o') {\n let string;\n const maxLength = 200;\n if (placeholder === '%c') {\n return '';\n }\n if (placeholder === '%s' && isGiven(arg)) {\n arg = arg.toString();\n }\n if (isString(arg)) {\n string = arg.trim().replace(/[\\n\\r\\t ]+/g, ' ');\n if (placeholder === '%o') {\n string = JSON.stringify(string);\n }\n }\n else if (isUndefined(arg)) {\n string = 'undefined';\n }\n else if (isNumber(arg) || isFunction(arg)) {\n string = arg.toString();\n }\n else if (isArray(arg)) {\n string = `[${map(arg, stringifyArg).join(', ')}]`;\n }\n else if (isJQuery(arg)) {\n string = `$(${map(arg, stringifyArg).join(', ')})`;\n }\n else if (isElement(arg)) {\n string = `<${arg.tagName.toLowerCase()}`;\n for (let attr of ['id', 'up-id', 'name', 'class']) {\n let value = arg.getAttribute(attr);\n if (value) {\n string += ` ${attr}=\"${value}\"`;\n }\n }\n string += \">\";\n }\n else if (isRegExp(arg) || isError(arg)) {\n string = arg.toString();\n }\n else {\n try {\n string = JSON.stringify(arg);\n }\n catch (error) {\n if (error.name === 'TypeError') {\n string = '(circular structure)';\n }\n else {\n throw error;\n }\n }\n }\n if (string.length > maxLength) {\n string = `${string.substr(0, maxLength)}\u2026${last(string)}`;\n }\n return string;\n }\n const SPRINTF_PLACEHOLDERS = /%[oOdisfc]/g;\n function sprintf(message, ...args) {\n return message.replace(SPRINTF_PLACEHOLDERS, (placeholder) => stringifyArg(args.shift(), placeholder));\n }\n function negate(fn) {\n return function (...args) {\n return !fn(...args);\n };\n }\n function useMemoizeCacheEntry(cacheEntry) {\n if (cacheEntry.error) {\n throw cacheEntry.error;\n }\n else {\n return cacheEntry.value;\n }\n }\n function buildMemoizeCacheEntry(oldImpl, self, args) {\n try {\n return { value: oldImpl.apply(self, args) };\n }\n catch (e) {\n return { error: e };\n }\n }\n function memoizeMethod(object, propLiteral) {\n for (let prop in propLiteral) {\n let originalDescriptor = Object.getOwnPropertyDescriptor(object, prop);\n let oldImpl = originalDescriptor.value;\n let cachingImpl = function (...args) {\n let cache = this[`__${prop}MemoizeCache`] ||= {};\n let cacheKey = JSON.stringify(args);\n cache[cacheKey] ||= buildMemoizeCacheEntry(oldImpl, this, args);\n return useMemoizeCacheEntry(cache[cacheKey]);\n };\n object[prop] = cachingImpl;\n }\n }\n function safeStringifyJSON(value) {\n let json = JSON.stringify(value);\n return escapeHighASCII(json);\n }\n function escapeHighASCII(string) {\n let unicodeEscape = (char) => \"\\\\u\" + char.charCodeAt(0).toString(16).padStart(4, '0');\n return string.replace(/[^\\x00-\\x7F]/g, unicodeEscape);\n }\n function variant(source, changes = {}) {\n let variant = Object.create(source);\n Object.assign(variant, changes);\n return variant;\n }\n return {\n parseURL,\n normalizeURL,\n matchableURL,\n matchableURLPatternAtom,\n matchURLs,\n normalizeMethod,\n methodAllowsPayload,\n copy,\n merge,\n mergeDefined,\n options: newOptions,\n parseArgIntoOptions,\n each,\n map,\n flatMap,\n mapObject,\n findResult,\n some,\n every,\n find: findInList,\n filter: filterList,\n reject,\n intersect,\n compact,\n compactObject,\n uniq,\n uniqBy,\n last,\n isNull,\n isDefined,\n isUndefined,\n isGiven,\n isMissing,\n isPresent,\n isBlank,\n presence,\n isObject,\n isFunction,\n isString,\n isBoolean,\n isNumber,\n isElement,\n isJQuery,\n isElementish,\n isPromise,\n isOptions,\n isArray,\n isFormData,\n isList,\n isRegExp,\n timer: scheduleTimer,\n contains,\n containsAll,\n objectContains,\n toArray,\n pick,\n pickBy,\n omit,\n unresolvablePromise,\n remove,\n memoize,\n pluckKey,\n renameKey,\n extractOptions,\n extractCallback,\n noop,\n asyncNoop,\n identity,\n escapeHTML,\n escapeRegExp,\n sequence,\n evalOption,\n evalAutoOption,\n flatten,\n newDeferred,\n always,\n isBasicObjectProperty,\n isCrossOrigin,\n task: queueTask,\n isEqual,\n parseTokens,\n wrapList,\n wrapValue,\n uid,\n upperCaseFirst,\n lowerCaseFirst,\n delegate: defineDelegates,\n reverse,\n camelToKebabCase,\n replaceValue,\n sprintf,\n renameKeys,\n memoizeMethod,\n safeStringifyJSON,\n variant,\n };\n})();\n\n\n/***/ }),\n/* 4 */\n/***/ (() => {\n\nup.error = (function () {\n function fail(...args) {\n throw new up.Error(args);\n }\n function isCritical(error) {\n return (typeof error !== 'object') || ((error.name !== 'AbortError') && !(error instanceof up.RenderResult) && !(error instanceof up.Response));\n }\n function muteUncriticalRejection(promise) {\n return promise.catch(throwCritical);\n }\n function muteUncriticalSync(block) {\n try {\n return block();\n }\n catch (e) {\n throwCritical(e);\n }\n }\n function throwCritical(value) {\n if (isCritical(value)) {\n throw value;\n }\n }\n function report(error) {\n console.error('Uncaught %o', error);\n let event = new ErrorEvent('error', { error, message: 'Uncaught ' + error });\n window.dispatchEvent(event);\n }\n function guard(fn) {\n try {\n return fn();\n }\n catch (error) {\n report(error);\n }\n }\n function guardFn(fn) {\n return (...args) => guard(() => fn(...args));\n }\n return {\n fail,\n throwCritical,\n muteUncriticalRejection,\n muteUncriticalSync,\n guard,\n guardFn,\n };\n})();\nup.fail = up.error.fail;\n\n\n/***/ }),\n/* 5 */\n/***/ (() => {\n\nup.migrate = {\n config: {},\n};\n\n\n/***/ }),\n/* 6 */\n/***/ (() => {\n\nup.browser = (function () {\n const u = up.util;\n function submitForm(form) {\n form.submit();\n }\n function canPushState() {\n return up.protocol.initialRequestMethod() === 'GET';\n }\n function canJQuery() {\n return !!window.jQuery;\n }\n const canHasSelector = u.memoize(() => CSS.supports('selector(:has(*))'));\n function popCookie(name) {\n let value = document.cookie.match(new RegExp(name + \"=(\\\\w+)\"))?.[1];\n if (value) {\n document.cookie = name + '=;Max-Age=0;Path=/';\n return value;\n }\n }\n function assertConfirmed(options) {\n const confirmed = !options.confirm || window.confirm(options.confirm);\n if (!confirmed) {\n throw new up.Aborted('User canceled action');\n }\n return true;\n }\n return {\n submitForm,\n canPushState,\n canJQuery,\n assertConfirmed,\n popCookie,\n canHasSelector,\n };\n})();\n\n\n/***/ }),\n/* 7 */\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n__webpack_require__(8);\nup.element = (function () {\n const u = up.util;\n function first(...args) {\n const selector = args.pop();\n const root = args[0] || document;\n return root.querySelector(selector);\n }\n function subtree(root, selector) {\n const results = [];\n if (root.matches(selector)) {\n results.push(root);\n }\n results.push(...root.querySelectorAll(selector));\n return results;\n }\n function contains(root, selectorOrElement) {\n const element = getOne(selectorOrElement);\n return Node.prototype.contains.call(root, element);\n }\n function ancestor(element, selector) {\n return element.parentNode?.closest(selector);\n }\n function around(element, selector) {\n return getList(element.closest(selector), subtree(element, selector));\n }\n function getOne(...args) {\n const value = args.pop();\n if (u.isElement(value)) {\n return value;\n }\n else if (u.isString(value)) {\n return first(...args, value);\n }\n else if (u.isList(value)) {\n if (value.length > 1) {\n up.fail('up.element.get(): Cannot cast multiple elements (%o) to a single element', value);\n }\n return value[0];\n }\n else {\n return value;\n }\n }\n function getList(...args) {\n return u.flatMap(args, valueToList);\n }\n function valueToList(value) {\n if (u.isString(value)) {\n return document.querySelectorAll(value);\n }\n else {\n return u.wrapList(value);\n }\n }\n function hide(element) {\n element.setAttribute('hidden', '');\n }\n function show(element) {\n element.removeAttribute('hidden');\n if (element.style.display === 'none') {\n element.style.display = '';\n }\n }\n function toggle(element, newVisible) {\n if (newVisible == null) {\n newVisible = !isVisible(element);\n }\n (newVisible ? show : hide)(element);\n }\n function toggleAttr(element, attr, value, newPresent) {\n if (newPresent == null) {\n newPresent = !element.hasAttribute(attr);\n }\n if (newPresent) {\n return element.setAttribute(attr, value);\n }\n else {\n return element.removeAttribute(attr);\n }\n }\n function setAttrs(element, attrs) {\n for (let key in attrs) {\n const value = attrs[key];\n if (u.isGiven(value)) {\n element.setAttribute(key, value);\n }\n else {\n element.removeAttribute(key);\n }\n }\n }\n function setTemporaryAttrs(element, attrs) {\n const oldAttrs = {};\n for (let key of Object.keys(attrs)) {\n oldAttrs[key] = element.getAttribute(key);\n }\n setAttrs(element, attrs);\n return () => setAttrs(element, oldAttrs);\n }\n function metaContent(name) {\n const selector = \"meta\" + attrSelector('name', name);\n return first(selector)?.getAttribute('content');\n }\n function insertBefore(existingElement, newElement) {\n existingElement.insertAdjacentElement('beforebegin', newElement);\n }\n function createFromSelector(selector, attrs = {}) {\n let { includePath } = parseSelector(selector);\n let rootElement;\n let depthElement;\n let previousElement;\n for (let includeSegment of includePath) {\n let { tagName, id, classNames, attributes } = includeSegment;\n if (!tagName || tagName === '*') {\n tagName = 'div';\n }\n depthElement = document.createElement(tagName);\n if (!rootElement) {\n rootElement = depthElement;\n }\n if (id) {\n depthElement.id = id;\n }\n for (let className of classNames) {\n depthElement.classList.add(className);\n }\n for (let attributeName in attributes) {\n let attributeValue = attributes[attributeName];\n depthElement.setAttribute(attributeName, attributeValue || '');\n }\n previousElement?.appendChild(depthElement);\n previousElement = depthElement;\n }\n for (let key in attrs) {\n let value = attrs[key];\n if (key === 'class') {\n for (let klass of u.wrapList(value)) {\n rootElement.classList.add(klass);\n }\n }\n else if (key === 'style') {\n setInlineStyle(rootElement, value);\n }\n else if (key === 'text') {\n rootElement.textContent = value;\n }\n else if (key === 'content') {\n rootElement.innerHTML = value;\n }\n else {\n rootElement.setAttribute(key, value);\n }\n }\n return rootElement;\n }\n function parseSelector(selector) {\n let excludeRaw;\n const includeRaw = selector.replace(/:not\\([^)]+\\)/, function (match) {\n excludeRaw = match;\n return '';\n });\n const [includeSelectorWithoutAttrValues, attrValues] = removeAttrSelectorValues(includeRaw);\n const includeSegments = includeSelectorWithoutAttrValues.split(/[ >]+/);\n let includePath = includeSegments.map(function (depthSelector) {\n let parsed = {\n tagName: null,\n classNames: [],\n id: null,\n attributes: {}\n };\n depthSelector = depthSelector.replace(/^[\\w-*]+/, function (match) {\n parsed.tagName = match;\n return '';\n });\n depthSelector = depthSelector.replace(/#([\\w-]+)/, function (_match, id) {\n parsed.id = id;\n return '';\n });\n depthSelector = depthSelector.replace(/\\.([\\w-]+)/g, function (_match, className) {\n parsed.classNames.push(className);\n return '';\n });\n if (attrValues.length) {\n depthSelector = replaceAttrSelectors(depthSelector, function ({ name }) {\n parsed.attributes[name] = attrValues.shift();\n return '';\n });\n }\n if (depthSelector) {\n up.fail('Cannot parse selector: ' + selector);\n }\n return parsed;\n });\n return {\n includePath,\n includeRaw,\n excludeRaw,\n };\n }\n const ATTR_SELECTOR_PATTERN = /\\[([\\w-]+)(?:([~|^$*]?=)([\"'])?([^\\3\\]]*?)\\3)?]/g;\n function replaceAttrSelectors(string, replacement) {\n return string.replace(ATTR_SELECTOR_PATTERN, function (_match, name, operator, quote, value) {\n if (value) {\n value = value.replace(/\\\\([\\\\\"'])/, '$1');\n }\n return replacement({ name, operator, quote, value });\n });\n }\n function removeAttrSelectorValues(selector) {\n let values = [];\n selector = replaceAttrSelectors(selector, function ({ name, value }) {\n values.push(value);\n return `[${name}]`;\n });\n return [selector, values];\n }\n function affix(parent, ...args) {\n let position, selector;\n const attributes = u.extractOptions(args);\n if (args.length === 2) {\n [position, selector] = args;\n }\n else {\n position = 'beforeend';\n selector = args[0];\n }\n const element = createFromSelector(selector, attributes);\n parent.insertAdjacentElement(position, element);\n return element;\n }\n const SINGLETON_TAG_NAMES = ['HTML', 'BODY', 'HEAD', 'TITLE'];\n const isSingleton = up.mockable(element => element.matches(SINGLETON_TAG_NAMES.join()));\n function elementTagName(element) {\n return element.tagName.toLowerCase();\n }\n function attrSelector(attribute, value) {\n if (u.isGiven(value)) {\n value = value.replace(/\"/g, '\\\\\"');\n return `[${attribute}=\"${value}\"]`;\n }\n else {\n return `[${attribute}]`;\n }\n }\n function idSelector(id) {\n if (id.match(/^[a-z][a-z0-9\\-_]*$/i)) {\n return `#${id}`;\n }\n else {\n return attrSelector('id', id);\n }\n }\n function classSelector(klass) {\n klass = klass.replace(/[^\\w-]/g, '\\\\$&');\n return `.${klass}`;\n }\n function createBrokenDocumentFromHTML(html) {\n return new DOMParser().parseFromString(html, 'text/html');\n }\n function fixParserDamage(scriptish) {\n let clone = createFromHTML(scriptish.outerHTML);\n scriptish.replaceWith(clone);\n }\n function createFromHTML(html) {\n const range = document.createRange();\n range.setStart(document.body, 0);\n const fragment = range.createContextualFragment(html.trim());\n let elements = fragment.childNodes;\n if (elements.length !== 1) {\n throw new Error('HTML must have a single root element');\n }\n return elements[0];\n }\n function getRoot() {\n return document.documentElement;\n }\n function paint(element) {\n element.offsetHeight;\n }\n function concludeCSSTransition(element) {\n const undo = setTemporaryStyle(element, { transition: 'none' });\n paint(element);\n return undo;\n }\n function hasCSSTransition(styleHash) {\n const prop = styleHash['transition-property'];\n const duration = styleHash['transition-duration'];\n const noTransition = ((prop === 'none') || ((prop === 'all') && (duration === 0)));\n return !noTransition;\n }\n function fixedToAbsolute(element) {\n const elementRectAsFixed = element.getBoundingClientRect();\n element.style.position = 'absolute';\n const offsetParentRect = element.offsetParent.getBoundingClientRect();\n setInlineStyle(element, {\n left: (elementRectAsFixed.left - computedStyleNumber(element, 'margin-left') - offsetParentRect.left) + 'px',\n top: (elementRectAsFixed.top - computedStyleNumber(element, 'margin-top') - offsetParentRect.top) + 'px',\n right: '',\n bottom: ''\n });\n }\n function setMissingAttrs(element, attrs) {\n for (let key in attrs) {\n setMissingAttr(element, key, attrs[key]);\n }\n }\n function setMissingAttr(element, key, value) {\n if (u.isMissing(element.getAttribute(key))) {\n element.setAttribute(key, value);\n }\n }\n function unwrap(wrapper) {\n preservingFocus(function () {\n const parent = wrapper.parentNode;\n const wrappedNodes = u.toArray(wrapper.childNodes);\n u.each(wrappedNodes, wrappedNode => parent.insertBefore(wrappedNode, wrapper));\n parent.removeChild(wrapper);\n });\n }\n function wrapChildren(element) {\n let childNode;\n const wrapper = document.createElement('up-wrapper');\n while ((childNode = element.firstChild)) {\n wrapper.appendChild(childNode);\n }\n element.appendChild(wrapper);\n return wrapper;\n }\n function preservingFocus(fn) {\n const oldFocusElement = document.activeElement;\n try {\n return fn();\n }\n finally {\n if (oldFocusElement && oldFocusElement !== document.activeElement) {\n oldFocusElement.focus({ preventScroll: true });\n }\n }\n }\n function stringAttr(element, attribute) {\n let value = element.getAttribute(attribute);\n return u.replaceValue(value, null, undefined);\n }\n function booleanAttr(element, attribute, pass) {\n if (!element.hasAttribute(attribute))\n return;\n const value = stringAttr(element, attribute);\n switch (value) {\n case 'false': {\n return false;\n }\n case 'true':\n case '':\n case attribute: {\n return true;\n }\n default: {\n if (pass) {\n return value;\n }\n else {\n return true;\n }\n }\n }\n }\n function booleanOrStringAttr(element, attribute, trueValue = true) {\n let value = booleanAttr(element, attribute, true);\n return value === true ? trueValue : value;\n }\n function numberAttr(element, attribute) {\n let value = element.getAttribute(attribute);\n if (value) {\n value = value.replace(/_/g, '');\n if (value.match(/^-?[\\d.]+$/)) {\n return parseFloat(value);\n }\n }\n }\n function jsonAttr(element, attribute) {\n let json = element.getAttribute?.(attribute)?.trim();\n if (json) {\n return JSON.parse(json);\n }\n }\n function callbackAttr(link, attr, { exposedKeys = [], mainKey = 'event' } = {}) {\n let code = link.getAttribute(attr);\n if (code) {\n const callback = up.NonceableCallback.fromString(code).toFunction(mainKey, ...exposedKeys);\n return function (event) {\n const exposedValues = Object.values(u.pick(event, exposedKeys));\n return callback.call(link, event, ...exposedValues);\n };\n }\n }\n function closestAttr(element, attr, parseFn = stringAttr) {\n let match = element.closest('[' + attr + ']');\n if (match) {\n return parseFn(match, attr);\n }\n }\n function setTemporaryStyle(element, newStyles) {\n const oldStyles = inlineStyle(element, Object.keys(newStyles));\n setInlineStyle(element, newStyles);\n return () => setInlineStyle(element, oldStyles);\n }\n function addTemporaryClass(element, klass) {\n element.classList.add(klass);\n return () => element.classList.remove(klass);\n }\n function computedStyle(element, props) {\n const style = window.getComputedStyle(element);\n return extractFromStyleObject(style, props);\n }\n function computedStyleNumber(element, prop) {\n const rawValue = computedStyle(element, prop);\n if (u.isPresent(rawValue)) {\n return parseFloat(rawValue);\n }\n }\n function inlineStyle(element, props) {\n const { style } = element;\n return extractFromStyleObject(style, props);\n }\n function extractFromStyleObject(style, keyOrKeys) {\n if (up.migrate.loaded)\n keyOrKeys = up.migrate.fixStyleProps(keyOrKeys);\n if (u.isString(keyOrKeys)) {\n return style.getPropertyValue(keyOrKeys);\n }\n else {\n return u.mapObject(keyOrKeys, (key) => [key, style.getPropertyValue(key)]);\n }\n }\n function setInlineStyle(element, props, unit = '') {\n if (up.migrate.loaded)\n props = up.migrate.fixStyleProps(props, unit);\n if (u.isString(props)) {\n element.setAttribute('style', props);\n }\n else {\n const { style } = element;\n for (let key in props) {\n let value = props[key];\n style.setProperty(key, value + unit);\n }\n }\n }\n function isVisible(element) {\n return !!(element.offsetWidth || element.offsetHeight || element.getClientRects().length);\n }\n function isUpPrefixed(string) {\n return /^up-/.test(string);\n }\n function upAttrs(element) {\n let attrNames = u.filter(element.getAttributeNames(), isUpPrefixed);\n return u.mapObject(attrNames, (name) => [name, element.getAttribute(name)]);\n }\n function upClasses(element) {\n return u.filter(element.classList.values(), isUpPrefixed);\n }\n function cleanJQuery(element) {\n if (up.browser.canJQuery()) {\n jQuery(element).remove();\n }\n }\n function isEmpty(element) {\n return !element.children.length > 0 && !element.innerText.trim();\n }\n function crossOriginSelector(attr) {\n return `[${attr}*=\"//\"]:not([${attr}*=\"//${location.host}/\"])`;\n }\n function isIntersectingWindow(element, { margin = 0 } = {}) {\n const rect = up.Rect.fromElement(element);\n rect.grow(margin);\n return (rect.bottom > 0) && (rect.top < window.innerHeight) &&\n (rect.right > 0) && (rect.left < window.innerWidth);\n }\n function unionSelector(includes, excludes) {\n let selector = `:is(${includes.join()})`;\n if (u.isPresent(excludes))\n selector += `:not(${excludes.join()})`;\n return selector;\n }\n return {\n subtree,\n contains,\n closestAttr,\n ancestor,\n around,\n get: getOne,\n list: getList,\n toggle,\n hide,\n show,\n metaContent,\n insertBefore,\n createFromSelector,\n setAttrs,\n setTemporaryAttrs,\n affix,\n idSelector,\n classSelector,\n isSingleton,\n attrSelector,\n tagName: elementTagName,\n createBrokenDocumentFromHTML,\n fixParserDamage,\n createFromHTML,\n get root() { return getRoot(); },\n paint,\n concludeCSSTransition,\n hasCSSTransition,\n fixedToAbsolute,\n setMissingAttrs,\n setMissingAttr,\n unwrap,\n wrapChildren,\n attr: stringAttr,\n booleanAttr,\n numberAttr,\n jsonAttr,\n callbackAttr,\n booleanOrStringAttr,\n setTemporaryStyle,\n style: computedStyle,\n styleNumber: computedStyleNumber,\n inlineStyle,\n setStyle: setInlineStyle,\n isVisible,\n upAttrs,\n upClasses,\n toggleAttr,\n addTemporaryClass,\n cleanJQuery,\n parseSelector,\n isEmpty,\n crossOriginSelector,\n isIntersectingWindow,\n unionSelector,\n };\n})();\n\n\n/***/ }),\n/* 8 */\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n\n\n/***/ }),\n/* 9 */\n/***/ (() => {\n\nup.Error = class Error extends window.Error {\n constructor(message, props = {}) {\n if (Array.isArray(message)) {\n message = up.util.sprintf(...message);\n }\n super(message);\n let name = 'up.' + this.constructor.name;\n Object.assign(this, { name }, props);\n }\n};\n\n\n/***/ }),\n/* 10 */\n/***/ (() => {\n\nup.NotImplemented = class NotImplemented extends up.Error {\n};\n\n\n/***/ }),\n/* 11 */\n/***/ (() => {\n\nup.Aborted = class Aborted extends up.Error {\n constructor(message) {\n super(message, { name: 'AbortError' });\n }\n};\n\n\n/***/ }),\n/* 12 */\n/***/ (() => {\n\nup.CannotMatch = class CannotMatch extends up.Error {\n};\n\n\n/***/ }),\n/* 13 */\n/***/ (() => {\n\nup.CannotParse = class CannotParse extends up.Error {\n};\n\n\n/***/ }),\n/* 14 */\n/***/ (() => {\n\nup.CannotTarget = class CannotTarget extends up.Error {\n};\n\n\n/***/ }),\n/* 15 */\n/***/ (() => {\n\nup.Offline = class Offline extends up.Error {\n};\n\n\n/***/ }),\n/* 16 */\n/***/ (() => {\n\nconst u = up.util;\nup.Record = class Record {\n keys() {\n throw 'Return an array of keys';\n }\n defaults(_options) {\n return {};\n }\n constructor(options) {\n Object.assign(this, this.defaults(options), this.attributes(options));\n }\n attributes(source = this) {\n return u.pick(source, this.keys());\n }\n [u.copy.key]() {\n return u.variant(this);\n }\n [u.isEqual.key](other) {\n return (this.constructor === other.constructor) && u.isEqual(this.attributes(), other.attributes());\n }\n};\n\n\n/***/ }),\n/* 17 */\n/***/ (() => {\n\nconst u = up.util;\nconst e = up.element;\nup.Config = class Config {\n constructor(blueprintFn = (() => ({}))) {\n this._blueprintFn = blueprintFn;\n this.reset();\n document.addEventListener('up:framework:reset', () => this.reset());\n }\n reset() {\n Object.assign(this, this._blueprintFn());\n }\n matches(element, prop) {\n return element.matches(this.selector(prop));\n }\n selector(prop) {\n let includes = this[prop];\n let excludes = this['no' + u.upperCaseFirst(prop)];\n return e.unionSelector(includes, excludes);\n }\n selectorFn(prop) {\n return () => this.selector(prop);\n }\n};\n\n\n/***/ }),\n/* 18 */\n/***/ (() => {\n\nlet enabledKey = 'up.log.enabled';\nlet enabled = false;\ntry {\n enabled = !!sessionStorage?.getItem(enabledKey);\n}\ncatch {\n}\nup.LogConfig = class LogConfig extends up.Config {\n constructor() {\n super(() => ({\n banner: true,\n format: true,\n }));\n }\n get enabled() {\n return enabled;\n }\n set enabled(newEnabled) {\n enabled = newEnabled;\n try {\n sessionStorage?.setItem(enabledKey, newEnabled ? '1' : '');\n }\n catch {\n }\n }\n};\n\n\n/***/ }),\n/* 19 */\n/***/ (() => {\n\nconst u = up.util;\nconst e = up.element;\nup.OptionsParser = class OptionsParser {\n constructor(element, options, parserOptions = {}) {\n this._options = options;\n this._element = element;\n this._parserOptions = parserOptions;\n this._fail = parserOptions.fail;\n this._closest = parserOptions.closest;\n this._attrPrefix = parserOptions.attrPrefix || 'up-';\n this._defaults = parserOptions.defaults || {};\n }\n string(key, keyOptions) {\n this.parse(e.attr, key, keyOptions);\n }\n boolean(key, keyOptions) {\n this.parse(e.booleanAttr, key, keyOptions);\n }\n number(key, keyOptions) {\n this.parse(e.numberAttr, key, keyOptions);\n }\n booleanOrString(key, keyOptions) {\n this.parse(e.booleanOrStringAttr, key, keyOptions);\n }\n json(key, keyOptions) {\n this.parse(e.jsonAttr, key, keyOptions);\n }\n callback(key, keyOptions = {}) {\n let parser = (link, attr) => e.callbackAttr(link, attr, keyOptions);\n this.parse(parser, key, keyOptions);\n }\n parse(attrValueFn, key, keyOptions = {}) {\n const attrNames = u.wrapList(keyOptions.attr ?? this._attrNameForKey(key));\n let value = this._options[key];\n for (let attrName of attrNames) {\n value ??= this._parseFromAttr(attrValueFn, this._element, attrName);\n }\n value ??= keyOptions.default ?? this._defaults[key];\n let normalizeFn = keyOptions.normalize;\n if (normalizeFn) {\n value = normalizeFn(value);\n }\n if (u.isDefined(value)) {\n this._options[key] = value;\n }\n let failKey;\n if (this._fail && (failKey = up.fragment.failKey(key))) {\n const failAttrNames = u.compact(u.map(attrNames, (attrName) => this._deriveFailAttrName(attrName)));\n this.parse(attrValueFn, failKey, { ...keyOptions, attr: failAttrNames });\n }\n }\n include(optionsFn) {\n let fnResult = optionsFn(this._element, this._options, this._parserOptions);\n Object.assign(this._options, fnResult);\n }\n _parseFromAttr(attrValueFn, element, attrName) {\n if (this._closest) {\n return e.closestAttr(element, attrName, attrValueFn);\n }\n else {\n return attrValueFn(element, attrName);\n }\n }\n _deriveFailAttrName(attr) {\n return this._deriveFailAttrNameForPrefix(attr, this._attrPrefix + 'on-') ||\n this._deriveFailAttrNameForPrefix(attr, this._attrPrefix);\n }\n _deriveFailAttrNameForPrefix(attr, prefix) {\n if (attr.startsWith(prefix)) {\n return `${prefix}fail-${attr.substring(prefix.length)}`;\n }\n }\n _attrNameForKey(option) {\n return `${this._attrPrefix}${u.camelToKebabCase(option)}`;\n }\n};\n\n\n/***/ }),\n/* 20 */\n/***/ (() => {\n\nconst u = up.util;\nup.FIFOCache = class FIFOCache {\n constructor({ capacity = 10, normalizeKey = u.identity } = {}) {\n this._map = new Map();\n this._capacity = capacity;\n this._normalizeKey = normalizeKey;\n }\n get(key) {\n key = this._normalizeKey(key);\n return this._map.get(key);\n }\n set(key, value) {\n if (this._map.size === this._capacity) {\n let oldestKey = this._map.keys().next().value;\n this._map.delete(oldestKey);\n }\n key = this._normalizeKey(key);\n this._map.set(key, value);\n }\n clear() {\n this._map.clear();\n }\n};\n\n\n/***/ }),\n/* 21 */\n/***/ (() => {\n\nup.Rect = class Rect extends up.Record {\n keys() {\n return [\n 'left',\n 'top',\n 'width',\n 'height'\n ];\n }\n get bottom() {\n return this.top + this.height;\n }\n get right() {\n return this.left + this.width;\n }\n grow(padding) {\n this.left -= padding;\n this.top -= padding;\n this.width += padding * 2;\n this.height += padding * 2;\n }\n static fromElement(element) {\n return new (this)(element.getBoundingClientRect());\n }\n};\n\n\n/***/ }),\n/* 22 */\n/***/ (() => {\n\nconst e = up.element;\nconst SHIFT_CLASS = 'up-scrollbar-away';\nup.BodyShifter = class BodyShifter {\n constructor() {\n this._anchoredElements = new Set();\n this._stack = 0;\n this._cleaners = [];\n }\n lowerStack() {\n if (--this._stack === 0)\n this._unshiftNow();\n }\n raiseStack() {\n if (++this._stack === 1)\n this._shiftNow();\n }\n onAnchoredElementInserted(element) {\n this._anchoredElements.add(element);\n this._shiftElement(element, 'right');\n return () => this._anchoredElements.delete(element);\n }\n _isShifted() {\n return this._rootScrollbarWidth && this._stack > 0;\n }\n _shiftNow() {\n this._rootScrollbarWidth = up.viewport.rootScrollbarWidth();\n this._cleaners.push(e.setTemporaryStyle(e.root, {\n '--up-scrollbar-width': this._rootScrollbarWidth + 'px'\n }));\n this._shiftElement(document.body, 'padding-right');\n for (let element of this._anchoredElements) {\n this._shiftElement(element, 'right');\n }\n }\n _shiftElement(element, styleProp) {\n if (!this._isShifted())\n return;\n let originalValue = e.style(element, styleProp);\n this._cleaners.push(e.setTemporaryStyle(element, { ['--up-original-' + styleProp]: originalValue }), e.addTemporaryClass(element, SHIFT_CLASS));\n }\n _unshiftNow() {\n let cleaner;\n while (cleaner = this._cleaners.pop()) {\n cleaner();\n }\n }\n};\n\n\n/***/ }),\n/* 23 */\n/***/ (() => {\n\nconst u = up.util;\nup.Change = class Change {\n constructor(options) {\n this.options = options;\n }\n execute() {\n throw new up.NotImplemented();\n }\n onFinished(renderResult) {\n return this.options.onFinished?.(renderResult);\n }\n improveHistoryValue(existingValue, newValue) {\n if ((existingValue === false) || u.isString(existingValue)) {\n return existingValue;\n }\n else {\n return newValue;\n }\n }\n deriveFailOptions() {\n return up.RenderOptions.deriveFailOptions(this.options);\n }\n};\n\n\n/***/ }),\n/* 24 */\n/***/ (() => {\n\nconst u = up.util;\nconst e = up.element;\nup.Change.Addition = class Addition extends up.Change {\n constructor(options) {\n super(options);\n this._acceptLayer = options.acceptLayer;\n this._dismissLayer = options.dismissLayer;\n this._eventPlans = options.eventPlans || [];\n this._response = options.response;\n }\n handleLayerChangeRequests() {\n if (this.layer.isOverlay()) {\n this.tryAcceptLayerFromServer();\n this.abortWhenLayerClosed();\n this.layer.tryAcceptForLocation(this.responseOption());\n this.abortWhenLayerClosed();\n this.tryDismissLayerFromServer();\n this.abortWhenLayerClosed();\n this.layer.tryDismissForLocation(this.responseOption());\n this.abortWhenLayerClosed();\n }\n this.layer.asCurrent(() => {\n for (let eventPlan of this._eventPlans) {\n up.emit({ ...eventPlan, ...this.responseOption() });\n this.abortWhenLayerClosed();\n }\n });\n }\n tryAcceptLayerFromServer() {\n if (u.isDefined(this._acceptLayer) && this.layer.isOverlay()) {\n this.layer.accept(this._acceptLayer, this.responseOption());\n }\n }\n tryDismissLayerFromServer() {\n if (u.isDefined(this._dismissLayer) && this.layer.isOverlay()) {\n this.layer.dismiss(this._dismissLayer, this.responseOption());\n }\n }\n abortWhenLayerClosed(layer = this.layer) {\n if (layer.isClosed()) {\n throw new up.Aborted('Layer was closed');\n }\n }\n setSource({ oldElement, newElement, source }) {\n if (source === 'keep') {\n source = (oldElement && up.fragment.source(oldElement));\n }\n if (source) {\n e.setMissingAttr(newElement, 'up-source', up.fragment.normalizeSource(source));\n }\n }\n setTime({ newElement, time }) {\n e.setMissingAttr(newElement, 'up-time', time ? time.toUTCString() : false);\n }\n setETag({ newElement, etag }) {\n e.setMissingAttr(newElement, 'up-etag', etag || false);\n }\n setReloadAttrs(options) {\n this.setSource(options);\n this.setTime(options);\n this.setETag(options);\n }\n responseOption() {\n return { response: this._response };\n }\n executeSteps(steps, responseDoc, noneOptions) {\n return new up.Change.UpdateSteps({ steps, noneOptions }).execute(responseDoc);\n }\n};\n\n\n/***/ }),\n/* 25 */\n/***/ (() => {\n\nvar _a;\nconst u = up.util;\nup.RenderJob = (_a = class RenderJob {\n constructor(options) {\n this.options = options;\n }\n execute() {\n this._rendered = this._executePromise();\n return this;\n }\n async _executePromise() {\n try {\n this._guardRender();\n this.options = up.RenderOptions.preprocess(this.options);\n let result = await this._getChange().execute();\n this._handleResult(result);\n return result;\n }\n catch (resultOrError) {\n this._handleResult(resultOrError) || this._handleError(resultOrError);\n throw resultOrError;\n }\n }\n _handleResult(result) {\n if (result instanceof up.RenderResult) {\n let { onRendered, onFinished } = result.options;\n if (!result.none)\n up.error.guard(() => onRendered?.(result));\n let guardedOnFinished = function (result) {\n up.error.guard(() => onFinished?.(result));\n };\n this.finished.then(guardedOnFinished, u.noop);\n return true;\n }\n }\n _handleError(error) {\n let prefix = error instanceof up.Aborted ? 'Rendering was aborted' : 'Error while rendering';\n up.puts('up.render()', `${prefix}: ${error.name}: ${error.message}`);\n up.error.guard(() => this.options.onError?.(error));\n }\n get finished() {\n return this._awaitFinished();\n }\n async _awaitFinished() {\n try {\n let result = await this._rendered;\n return await result.finished;\n }\n catch (error) {\n if (error instanceof up.RenderResult) {\n throw await error.finished;\n }\n else {\n throw error;\n }\n }\n }\n _getChange() {\n if (this.options.url) {\n let onRequest = (request) => this._handleAbortOption(request);\n return new up.Change.FromURL({ ...this.options, onRequest });\n }\n else if (this.options.response) {\n let onRender = () => this._handleAbortOption(null);\n return new up.Change.FromResponse({ ...this.options, onRender });\n }\n else {\n let onRender = () => this._handleAbortOption(null);\n return new up.Change.FromContent({ ...this.options, onRender });\n }\n }\n _guardRender() {\n up.browser.assertConfirmed(this.options);\n let guardEvent = u.pluckKey(this.options, 'guardEvent');\n if (guardEvent) {\n guardEvent.renderOptions = this.options;\n if (up.emit(guardEvent, { target: this.options.origin }).defaultPrevented) {\n throw new up.Aborted(`Rendering was prevented by ${guardEvent.type} listener`);\n }\n }\n up.RenderOptions.assertContentGiven(this.options);\n }\n _handleAbortOption(request) {\n let { abort } = this.options;\n if (!abort || !up.network.isBusy())\n return;\n let { fragments, layer, origin, newLayer } = this._getChange().getPreflightProps();\n let abortOptions = {\n except: request,\n logOnce: ['up.render()', 'Change with { abort } option will abort other requests'],\n newLayer,\n origin,\n };\n if (abort === 'target') {\n up.fragment.abort(fragments, abortOptions);\n }\n else if (abort === 'layer') {\n up.fragment.abort({ ...abortOptions, layer });\n }\n else if (abort === 'all' || abort === true) {\n up.fragment.abort({ ...abortOptions, layer: 'any' });\n }\n else if (u.isFunction(abort)) {\n abort(abortOptions);\n }\n else {\n up.fragment.abort(abort, { ...abortOptions, layer });\n }\n }\n },\n (() => {\n u.delegate(_a.prototype, ['then', 'catch', 'finally'], function () { return this._rendered; });\n u.memoizeMethod(_a.prototype, {\n _awaitFinished: true,\n _getChange: true,\n });\n })(),\n _a);\n\n\n/***/ }),\n/* 26 */\n/***/ (() => {\n\nup.Change.Removal = class Removal extends up.Change {\n};\n\n\n/***/ }),\n/* 27 */\n/***/ (() => {\n\nup.Change.DestroyFragment = class DestroyFragment extends up.Change.Removal {\n constructor(options) {\n super(options);\n this._layer = up.layer.get(options) || up.layer.current;\n this._element = this.options.element;\n this._animation = this.options.animation;\n this._log = this.options.log;\n }\n execute() {\n this._parent = this._element.parentNode;\n up.fragment.markAsDestroying(this._element);\n if (up.motion.willAnimate(this._element, this._animation, this.options)) {\n this._destroyAfterAnimation();\n }\n else {\n this._destroyNow();\n }\n }\n async _destroyAfterAnimation() {\n this._emitDestroyed();\n await this._animate();\n this._wipe();\n this.onFinished();\n }\n _destroyNow() {\n this._wipe();\n this._emitDestroyed();\n this.onFinished();\n }\n _animate() {\n return up.motion.animate(this._element, this._animation, this.options);\n }\n _wipe() {\n this._layer.asCurrent(() => {\n up.fragment.abort(this._element);\n up.script.clean(this._element, { layer: this._layer });\n up.element.cleanJQuery(this._element);\n this._element.remove();\n });\n }\n _emitDestroyed() {\n up.fragment.emitDestroyed(this._element, { parent: this._parent, log: this._log });\n }\n};\n\n\n/***/ }),\n/* 28 */\n/***/ (() => {\n\nlet u = up.util;\nup.Change.OpenLayer = class OpenLayer extends up.Change.Addition {\n constructor(options) {\n super(options);\n this.target = options.target;\n this._origin = options.origin;\n this._baseLayer = options.baseLayer;\n }\n getPreflightProps() {\n return {\n mode: this.options.mode,\n context: this._buildLayer().context,\n origin: this.options.origin,\n target: this.target,\n layer: this._baseLayer,\n fragments: u.compact([up.fragment.get(':main', { layer: this._baseLayer })]),\n newLayer: true,\n };\n }\n execute(responseDoc, onApplicable) {\n this.responseDoc = responseDoc;\n this._matchPostflight();\n onApplicable();\n this._createOverlay();\n let unbindClosing = this.layer.on('up:layer:accepting up:layer:dimissing', this._renderOtherLayers.bind(this));\n try {\n this._renderOverlayContent();\n this._renderOtherLayers();\n return up.RenderResult.both(this._newOverlayResult, this._otherLayersResult);\n }\n finally {\n unbindClosing();\n }\n }\n _matchPostflight() {\n if (this.target === ':none') {\n this._content = document.createElement('up-none');\n }\n else {\n this._content = this.responseDoc.select(this.target);\n }\n if (!this._content || this._baseLayer.isClosed()) {\n throw new up.CannotMatch();\n }\n }\n _createOverlay() {\n up.puts('up.render()', `Opening element \"${this.target}\" in new overlay`);\n this._assertOpenEventEmitted();\n this.layer = this._buildLayer();\n this._baseLayer.peel({ history: !this.layer.history });\n up.layer.stack.push(this.layer);\n this.layer.createElements();\n this.layer.setupHandlers();\n }\n _renderOverlayContent() {\n this._handleHistory();\n this.handleLayerChangeRequests();\n this.responseDoc.commitElement(this._content);\n this.layer.setContent(this._content);\n this.setReloadAttrs({ newElement: this._content, source: this.options.source });\n this.responseDoc.finalizeElement(this._content);\n this._newOverlayResult = new up.RenderResult({\n layer: this.layer,\n fragments: [this._content],\n target: this.target,\n });\n up.hello(this.layer.element, { ...this.options, layer: this.layer });\n this._handleScroll();\n this._newOverlayResult.finished = this._finish();\n this.layer.opening = false;\n this._emitOpenedEvent();\n this.abortWhenLayerClosed();\n }\n _renderOtherLayers() {\n if (this._otherLayersResult)\n return;\n let otherLayerSteps = this._getHungrySteps().other;\n this._otherLayersResult = this.executeSteps(otherLayerSteps, this.responseDoc);\n }\n async _finish() {\n await this.layer.startOpenAnimation();\n this.abortWhenLayerClosed();\n this._handleFocus();\n return this._newOverlayResult;\n }\n _buildLayer() {\n const buildOptions = { ...this.options, opening: true };\n const beforeNew = optionsWithLayerDefaults => {\n return this.options = up.RenderOptions.finalize(optionsWithLayerDefaults);\n };\n return up.layer.build(buildOptions, beforeNew);\n }\n _handleHistory() {\n if (this.layer.history === 'auto') {\n this.layer.history = up.fragment.hasAutoHistory([this._content], this.layer);\n }\n let { parent } = this.layer;\n this.layer.history &&= parent.history;\n parent.saveHistory();\n this.layer.updateHistory(this.options);\n }\n _handleFocus() {\n this._baseLayer.overlayFocus?.moveToBack();\n this.layer.overlayFocus.moveToFront();\n const fragmentFocus = new up.FragmentFocus({\n fragment: this._content,\n layer: this.layer,\n autoMeans: ['autofocus', 'layer'],\n inputDevice: this.options.inputDevice,\n });\n fragmentFocus.process(this.options.focus);\n }\n _handleScroll() {\n const scrollingOptions = {\n ...this.options,\n fragment: this._content,\n layer: this.layer,\n autoMeans: ['hash', 'layer']\n };\n const scrolling = new up.FragmentScrolling(scrollingOptions);\n scrolling.process(this.options.scroll);\n }\n _assertOpenEventEmitted() {\n up.event.assertEmitted('up:layer:open', {\n origin: this._origin,\n baseLayer: this._baseLayer,\n layerOptions: this.options,\n log: \"Opening new overlay\"\n });\n }\n _emitOpenedEvent() {\n this.layer.emit('up:layer:opened', {\n origin: this._origin,\n callback: this.layer.callback('onOpened'),\n log: `Opened new ${this.layer}`\n });\n }\n _getHungrySteps() {\n return up.radio.hungrySteps(this._getEffectiveRenderOptions());\n }\n _getEffectiveRenderOptions() {\n return {\n ...this.options,\n layer: this.layer,\n history: this.layer.history,\n };\n }\n};\n\n\n/***/ }),\n/* 29 */\n/***/ (() => {\n\nvar _a;\nconst u = up.util;\nup.Change.UpdateLayer = (_a = class UpdateLayer extends up.Change.Addition {\n constructor(options) {\n options = up.RenderOptions.finalize(options);\n super(options);\n this.layer = options.layer;\n this.target = options.target;\n this._context = options.context;\n this._steps = up.fragment.parseTargetSteps(this.target, this.options);\n }\n getPreflightProps() {\n this._matchPreflight();\n return {\n layer: this.layer,\n mode: this.layer.mode,\n context: u.merge(this.layer.context, this._context),\n origin: this.options.origin,\n target: this._bestPreflightSelector(),\n fragments: this._getFragments(),\n newLayer: false,\n };\n }\n _bestPreflightSelector() {\n this._matchPreflight();\n return up.fragment.targetForSteps(this._steps);\n }\n _getFragments() {\n this._matchPreflight();\n return u.map(this._steps, 'oldElement');\n }\n execute(responseDoc, onApplicable) {\n this.responseDoc = responseDoc;\n this._matchPostflight();\n onApplicable();\n let unbindClosing = this.layer.on('up:layer:accepting up:layer:dimissing', this._renderOtherLayers.bind(this));\n try {\n this._renderCurrentLayer();\n this._renderOtherLayers();\n return up.RenderResult.both(this._currentLayerResult, this._otherLayersResult);\n }\n finally {\n unbindClosing();\n }\n }\n _renderCurrentLayer() {\n if (this._steps.length) {\n up.puts('up.render()', `Updating \"${this._bestPreflightSelector()}\" in ${this.layer}`);\n }\n this._setScrollAndFocusOptions();\n if (this.options.saveScroll) {\n up.viewport.saveScroll({ layer: this.layer });\n }\n if (this.options.saveFocus) {\n up.viewport.saveFocus({ layer: this.layer });\n }\n if (this.options.peel) {\n this.layer.peel({ history: !this._hasHistory() });\n }\n if (this.options.abort !== false) {\n up.fragment.abort(this._getFragments(), { reason: 'Fragment is being replaced' });\n }\n Object.assign(this.layer.context, this._context);\n if (this._hasHistory()) {\n this.layer.updateHistory(this.options);\n }\n this.handleLayerChangeRequests();\n this._currentLayerResult = this.executeSteps(this._steps, this.responseDoc, this.options);\n }\n _renderOtherLayers() {\n if (this._otherLayersResult)\n return;\n let otherLayerSteps = this._getHungrySteps().other;\n this._otherLayersResult = this.executeSteps(otherLayerSteps, this.responseDoc);\n }\n _matchPreflight() {\n this._matchOldElements();\n this._compressNestedSteps();\n }\n _matchPostflight() {\n this._matchOldElements();\n this._addHungryStepsOnCurrentLayer();\n this._compressNestedSteps();\n this._matchNewElements();\n }\n _addHungryStepsOnCurrentLayer() {\n this._steps.push(...this._getHungrySteps().current);\n }\n _matchOldElements() {\n this._steps = this._steps.filter((step) => {\n const finder = new up.FragmentFinder(u.pick(step, ['selector', 'origin', 'layer', 'match', 'preferOldElements']));\n step.oldElement ||= finder.find();\n if (step.oldElement) {\n return true;\n }\n else if (!step.maybe) {\n throw new up.CannotMatch();\n }\n });\n }\n _matchNewElements() {\n this._steps = this.responseDoc.selectSteps(this._steps);\n }\n _compressNestedSteps() {\n this._steps = up.fragment.compressNestedSteps(this._steps);\n }\n _getHungrySteps() {\n return up.radio.hungrySteps(this._getEffectiveRenderOptions());\n }\n _setScrollAndFocusOptions() {\n let focusCapsule = up.FocusCapsule.preserve(this.layer);\n this._steps.forEach((step, i) => {\n step.focusCapsule = focusCapsule;\n if (i > 0) {\n step.scroll = false;\n step.focus = false;\n }\n });\n }\n _hasHistory() {\n return u.evalAutoOption(this.options.history, this._hasAutoHistory.bind(this));\n }\n _hasAutoHistory() {\n const oldFragments = u.map(this._steps, 'oldElement');\n return up.fragment.hasAutoHistory(oldFragments, this.layer);\n }\n _getEffectiveRenderOptions() {\n return {\n ...this.options,\n layer: this.layer,\n history: this._hasHistory(),\n };\n }\n },\n (() => {\n u.memoizeMethod(_a.prototype, {\n _matchPreflight: true,\n _matchOldElements: true,\n _hasHistory: true,\n _getHungrySteps: true,\n });\n })(),\n _a);\n\n\n/***/ }),\n/* 30 */\n/***/ (() => {\n\nconst u = up.util;\nconst e = up.element;\nup.Change.UpdateSteps = class UpdateSteps extends up.Change.Addition {\n constructor(options) {\n super(options);\n this._noneOptions = options.noneOptions || {};\n this._steps = u.copy(options.steps);\n }\n execute(responseDoc) {\n this.responseDoc = responseDoc;\n this._steps = responseDoc.selectSteps(this._steps);\n this._steps = responseDoc.commitSteps(this._steps);\n if (!this._steps.length) {\n return this._executeNone();\n }\n this.renderResult = new up.RenderResult({\n layer: this._steps[0]?.layer,\n target: up.fragment.targetForSteps(this._steps),\n });\n this._steps.reverse();\n const motionEndPromises = this._steps.map(step => this._executeStep(step));\n this.renderResult.finished = this._finish(motionEndPromises);\n return this.renderResult;\n }\n _executeNone() {\n this._handleFocus(null, this._noneOptions);\n this._handleScroll(null, this._noneOptions);\n return up.RenderResult.buildNone();\n }\n async _finish(motionEndPromises) {\n await Promise.all(motionEndPromises);\n for (let step of this._steps) {\n this.abortWhenLayerClosed(step.layer);\n }\n return this.renderResult;\n }\n _addToResult(fragment) {\n let newFragments = fragment.matches('up-wrapper') ? fragment.children : [fragment];\n this.renderResult.fragments.unshift(...newFragments);\n }\n _executeStep(step) {\n this.setReloadAttrs(step);\n switch (step.placement) {\n case 'swap': {\n let keepPlan = this._findKeepPlan(step);\n if (keepPlan) {\n this._handleFocus(step.oldElement, step);\n this._handleScroll(step.oldElement, step);\n return Promise.resolve();\n }\n else {\n this._preserveKeepables(step);\n const parent = step.oldElement.parentNode;\n const morphOptions = {\n ...step,\n beforeStart() {\n up.fragment.markAsDestroying(step.oldElement);\n },\n afterInsert: () => {\n this._restoreKeepables(step);\n this.responseDoc.finalizeElement(step.newElement);\n this._unmarkKeepables(step);\n up.hello(step.newElement, step);\n this._addToResult(step.newElement);\n },\n beforeDetach: () => {\n up.script.clean(step.oldElement, { layer: step.layer });\n },\n afterDetach() {\n up.element.cleanJQuery();\n up.fragment.emitDestroyed(step.oldElement, { parent, log: false });\n },\n scrollNew: () => {\n this._handleFocus(step.newElement, step);\n this._handleScroll(step.newElement, step);\n }\n };\n return up.morph(step.oldElement, step.newElement, step.transition, morphOptions);\n }\n }\n case 'content': {\n let oldWrapper = e.wrapChildren(step.oldElement);\n let newWrapper = e.wrapChildren(step.newElement);\n let wrapperStep = {\n ...step,\n placement: 'swap',\n oldElement: oldWrapper,\n newElement: newWrapper,\n focus: false\n };\n return this._executeStep(wrapperStep).then(() => {\n e.unwrap(newWrapper);\n this._handleFocus(step.oldElement, step);\n });\n }\n case 'before':\n case 'after': {\n let wrapper = e.wrapChildren(step.newElement);\n let position = step.placement === 'before' ? 'afterbegin' : 'beforeend';\n step.oldElement.insertAdjacentElement(position, wrapper);\n this.responseDoc.finalizeElement(wrapper);\n up.hello(wrapper, step);\n this._addToResult(wrapper);\n this._handleFocus(wrapper, step);\n this._handleScroll(wrapper, step);\n return up.animate(wrapper, step.transition, step).then(() => e.unwrap(wrapper));\n }\n default: {\n up.fail('Unknown placement: %o', step.placement);\n }\n }\n }\n _findKeepPlan(options) {\n if (!options.useKeep) {\n return;\n }\n const { oldElement, newElement } = options;\n let doKeep = e.booleanAttr(oldElement, 'up-keep');\n if (!doKeep) {\n return;\n }\n let partner;\n let partnerSelector = up.fragment.toTarget(oldElement);\n const lookupOpts = { layer: options.layer };\n if (options.descendantsOnly) {\n partner = up.fragment.get(newElement, partnerSelector, lookupOpts);\n }\n else {\n partner = up.fragment.subtree(newElement, partnerSelector, lookupOpts)[0];\n }\n if (partner && e.booleanAttr(partner, 'up-keep') !== false) {\n const plan = {\n oldElement,\n newElement: partner,\n newData: up.script.data(partner),\n renderOptions: options,\n };\n if (!up.fragment.emitKeep(plan).defaultPrevented) {\n return plan;\n }\n }\n }\n _preserveKeepables(step) {\n const keepPlans = [];\n if (step.useKeep) {\n for (let keepable of step.oldElement.querySelectorAll('[up-keep]')) {\n let keepPlan = this._findKeepPlan({ ...step, oldElement: keepable, descendantsOnly: true });\n if (keepPlan) {\n const keepableClone = keepable.cloneNode(true);\n keepable.insertAdjacentElement('beforebegin', keepableClone);\n keepable.classList.add('up-keeping');\n up.script.disableSubtree(keepPlan.newElement);\n let viewports = up.viewport.subtree(keepPlan.oldElement);\n keepPlan.revivers = viewports.map(function (viewport) {\n let cursorProps = up.viewport.copyCursorProps(viewport);\n return () => up.viewport.copyCursorProps(cursorProps, viewport);\n });\n if (this._willChangeElement(document.body)) {\n keepPlan.newElement.replaceWith(keepable);\n }\n else {\n document.body.append(keepable);\n }\n keepPlans.push(keepPlan);\n }\n }\n }\n step.keepPlans = keepPlans;\n }\n _restoreKeepables(step) {\n for (let keepPlan of step.keepPlans) {\n keepPlan.newElement.replaceWith(keepPlan.oldElement);\n for (let reviver of keepPlan.revivers) {\n reviver();\n }\n }\n }\n _unmarkKeepables(step) {\n for (let keepPlan of step.keepPlans) {\n keepPlan.oldElement.classList.remove('up-keeping');\n }\n }\n _willChangeElement(element) {\n return u.some(this._steps, (step) => step.oldElement.contains(element));\n }\n _handleFocus(fragment, options) {\n const fragmentFocus = new up.FragmentFocus({\n ...options,\n fragment,\n autoMeans: up.fragment.config.autoFocus,\n });\n return fragmentFocus.process(options.focus);\n }\n _handleScroll(fragment, options) {\n const scrolling = new up.FragmentScrolling({\n ...options,\n fragment,\n autoMeans: up.fragment.config.autoScroll\n });\n return scrolling.process(options.scroll);\n }\n};\n\n\n/***/ }),\n/* 31 */\n/***/ (() => {\n\nconst u = up.util;\nup.Change.CloseLayer = class CloseLayer extends up.Change.Removal {\n constructor(options) {\n super(options);\n this._verb = options.verb;\n this._layer = up.layer.get(options);\n this._origin = options.origin;\n this._value = options.value;\n this._preventable = options.preventable ?? true;\n this._response = options.response;\n this._history = options.history ?? true;\n }\n execute() {\n if (!this._layer.isOpen()) {\n return Promise.resolve();\n }\n up.browser.assertConfirmed(this.options);\n if (this._emitCloseEvent().defaultPrevented && this._preventable) {\n throw new up.Aborted('Close event was prevented');\n }\n this._emitClosingEvent();\n up.fragment.abort({ reason: 'Layer is closing', layer: this._layer });\n const { parent } = this._layer;\n this._layer.peel();\n this._layer.stack.remove(this._layer);\n if (this._history) {\n parent.restoreHistory();\n }\n this._handleFocus(parent);\n this._layer.teardownHandlers();\n this._layer.destroyElements(this.options);\n this._emitClosedEvent(parent);\n }\n _emitCloseEvent() {\n let event = this._layer.emit(this._buildEvent(`up:layer:${this._verb}`), {\n callback: this._layer.callback(`on${u.upperCaseFirst(this._verb)}`),\n log: [`Will ${this._verb} ${this._layer} with value %o`, this._value]\n });\n this._value = event.value;\n return event;\n }\n _emitClosingEvent() {\n let event = this._buildEvent(`up:layer:${this._verb}ing`);\n this._layer.emit(event, { log: false });\n }\n _emitClosedEvent(formerParent) {\n const verbPast = `${this._verb}ed`;\n const verbPastUpperCaseFirst = u.upperCaseFirst(verbPast);\n return this._layer.emit(this._buildEvent(`up:layer:${verbPast}`), {\n baseLayer: formerParent,\n callback: this._layer.callback(`on${verbPastUpperCaseFirst}`),\n ensureBubbles: true,\n log: [`${verbPastUpperCaseFirst} ${this._layer} with value %o`, this._value]\n });\n }\n _buildEvent(name) {\n return up.event.build(name, {\n layer: this._layer,\n value: this._value,\n origin: this._origin,\n response: this._response,\n });\n }\n _handleFocus(formerParent) {\n this._layer.overlayFocus.teardown();\n formerParent.overlayFocus?.moveToFront();\n let newFocusElement = this._layer.origin || formerParent.element;\n up.focus(newFocusElement, { preventScroll: true });\n }\n};\n\n\n/***/ }),\n/* 32 */\n/***/ (() => {\n\nvar _a;\nconst u = up.util;\nup.Change.FromURL = (_a = class FromURL extends up.Change {\n execute() {\n let _newPageReason = this._newPageReason();\n if (_newPageReason) {\n up.puts('up.render()', _newPageReason);\n up.network.loadPage(this.options);\n return u.unresolvablePromise();\n }\n this.request = up.request(this._getRequestAttrs());\n this.options.onRequest?.(this.request);\n up.feedback.showAroundRequest(this.request, this.options);\n up.form.disableWhile(this.request, this.options);\n if (this.options.preload) {\n return this.request;\n }\n return u.always(this.request, responseOrError => this._onRequestSettled(responseOrError));\n }\n _newPageReason() {\n if (u.isCrossOrigin(this.options.url)) {\n return 'Loading cross-origin content in new page';\n }\n if (this.options.history && !up.browser.canPushState()) {\n return 'Loading content in new page to restore history support';\n }\n }\n _getRequestAttrs() {\n const successAttrs = this._preflightPropsForRenderOptions(this.options);\n const failAttrs = this._preflightPropsForRenderOptions(this.deriveFailOptions(), { optional: true });\n return {\n ...this.options,\n ...successAttrs,\n ...u.renameKeys(failAttrs, up.fragment.failKey)\n };\n }\n getPreflightProps() {\n return this._getRequestAttrs();\n }\n _preflightPropsForRenderOptions(renderOptions, requestAttributesOptions) {\n const preview = new up.Change.FromContent({ ...renderOptions, preview: true });\n return preview.getPreflightProps(requestAttributesOptions);\n }\n _onRequestSettled(response) {\n if (response instanceof up.Response) {\n return this._onRequestSettledWithResponse(response);\n }\n else {\n return this._onRequestSettledWithError(response);\n }\n }\n _onRequestSettledWithResponse(response) {\n return new up.Change.FromResponse({ ...this.options, response }).execute();\n }\n _onRequestSettledWithError(error) {\n if (error instanceof up.Offline) {\n this.request.emit('up:fragment:offline', {\n callback: this.options.onOffline,\n renderOptions: this.options,\n retry: (retryOptions) => up.render({ ...this.options, ...retryOptions }),\n log: ['Cannot load fragment from %s: %s', this.request.description, error.reason],\n });\n }\n throw error;\n }\n },\n (() => {\n u.memoizeMethod(_a.prototype, {\n _getRequestAttrs: true,\n });\n })(),\n _a);\n\n\n/***/ }),\n/* 33 */\n/***/ (() => {\n\nvar _a;\nconst u = up.util;\nup.Change.FromResponse = (_a = class FromResponse extends up.Change {\n constructor(options) {\n super(options);\n this._response = options.response;\n this._request = this._response.request;\n }\n execute() {\n if (up.fragment.config.skipResponse(this._loadedEventProps())) {\n this._skip();\n }\n else {\n this._request.assertEmitted('up:fragment:loaded', {\n ...this._loadedEventProps(),\n callback: this.options.onLoaded,\n log: ['Loaded fragment from %s', this._response.description],\n skip: () => this._skip()\n });\n }\n let fail = u.evalOption(this.options.fail, this._response) ?? !this._response.ok;\n if (fail) {\n throw this._updateContentFromResponse(this.deriveFailOptions());\n }\n return this._updateContentFromResponse(this.options);\n }\n _skip() {\n up.puts('up.render()', 'Skipping ' + this._response.description);\n this.options.target = ':none';\n this.options.failTarget = ':none';\n }\n _updateContentFromResponse(finalRenderOptions) {\n if (finalRenderOptions.failPrefixForced) {\n up.puts('up.render()', 'Rendering failed response using fail-prefixed options (https://unpoly.com/failed-responses)');\n }\n this._augmentOptionsFromResponse(finalRenderOptions);\n finalRenderOptions.meta = this._compilerPassMeta();\n let result = new up.Change.FromContent(finalRenderOptions).execute();\n result.finished = this.finish(result, finalRenderOptions);\n return result;\n }\n async finish(renderResult, originalRenderOptions) {\n renderResult = await renderResult.finished;\n if (up.fragment.shouldRevalidate(this._request, this._response, originalRenderOptions)) {\n renderResult = await this._revalidate(renderResult, originalRenderOptions);\n }\n return renderResult;\n }\n async _revalidate(renderResult, originalRenderOptions) {\n let inputTarget = originalRenderOptions.target;\n let effectiveTarget = renderResult.target;\n if (/:(before|after)/.test(inputTarget)) {\n up.warn('up.render()', 'Cannot revalidate cache when prepending/appending (target %s)', inputTarget);\n }\n else {\n up.puts('up.render()', 'Revalidating cached response for target \"%s\"', effectiveTarget);\n let verifyResult = await up.reload(effectiveTarget, {\n ...originalRenderOptions,\n preferOldElements: renderResult.fragments,\n layer: renderResult.layer,\n onFinished: null,\n scroll: false,\n focus: 'keep',\n transition: false,\n cache: false,\n confirm: false,\n feedback: false,\n abort: false,\n expiredResponse: this._response,\n });\n if (!verifyResult.none) {\n renderResult = verifyResult;\n }\n }\n return renderResult;\n }\n _loadedEventProps() {\n const { expiredResponse } = this.options;\n return {\n request: this._request,\n response: this._response,\n renderOptions: this.options,\n revalidating: !!expiredResponse,\n expiredResponse,\n };\n }\n _compilerPassMeta() {\n let meta = { revalidating: !!this.options.expiredResponse };\n up.migrate.processCompilerPassMeta?.(meta, this._response);\n return meta;\n }\n _augmentOptionsFromResponse(renderOptions) {\n const responseURL = this._response.url;\n let serverLocation = responseURL;\n let hash = this._request.hash;\n if (hash) {\n renderOptions.hash = hash;\n serverLocation += hash;\n }\n const isReloadable = (this._response.method === 'GET');\n if (isReloadable) {\n renderOptions.source = this.improveHistoryValue(renderOptions.source, responseURL);\n }\n else {\n renderOptions.source = this.improveHistoryValue(renderOptions.source, 'keep');\n renderOptions.history = !!renderOptions.location;\n }\n renderOptions.location = this.improveHistoryValue(renderOptions.location, serverLocation);\n renderOptions.title = this.improveHistoryValue(renderOptions.title, this._response.title);\n renderOptions.eventPlans = this._response.eventPlans;\n let serverTarget = this._response.target;\n if (serverTarget) {\n renderOptions.target = serverTarget;\n }\n renderOptions.acceptLayer = this._response.acceptLayer;\n renderOptions.dismissLayer = this._response.dismissLayer;\n renderOptions.document = this._response.text;\n if (this._response.none) {\n renderOptions.target = ':none';\n }\n renderOptions.context = u.merge(renderOptions.context, this._response.context);\n renderOptions.cspNonces = this._response.cspNonces;\n renderOptions.time ??= this._response.lastModified;\n renderOptions.etag ??= this._response.etag;\n }\n },\n (() => {\n u.memoizeMethod(_a.prototype, {\n _loadedEventProps: true,\n });\n })(),\n _a);\n\n\n/***/ }),\n/* 34 */\n/***/ (() => {\n\nvar _a;\nconst u = up.util;\nup.Change.FromContent = (_a = class FromContent extends up.Change {\n constructor(options) {\n super(options);\n this._origin = options.origin;\n this._preview = options.preview;\n this._layers = up.layer.getAll(options);\n }\n _getPlans() {\n let plans = [];\n this._filterLayers();\n this._improveOptionsFromResponseDoc();\n this._expandIntoPlans(plans, this._layers, this.options.target);\n this._expandIntoPlans(plans, this._layers, this.options.fallback);\n return plans;\n }\n _isRenderableLayer(layer) {\n return (layer === 'new') || layer.isOpen();\n }\n _filterLayers() {\n this._layers = u.filter(this._layers, this._isRenderableLayer);\n }\n _expandIntoPlans(plans, layers, targets) {\n for (let layer of layers) {\n for (let target of this._expandTargets(targets, layer)) {\n const props = { ...this.options, target, layer, defaultPlacement: this._defaultPlacement() };\n const change = layer === 'new' ? new up.Change.OpenLayer(props) : new up.Change.UpdateLayer(props);\n plans.push(change);\n }\n }\n }\n _expandTargets(targets, layer) {\n return up.fragment.expandTargets(targets, { layer, mode: this.options.mode, origin: this._origin });\n }\n execute() {\n if (this.options.preload) {\n return Promise.resolve();\n }\n return this._seekPlan(this._executePlan.bind(this)) || this._cannotMatchPostflightTarget();\n }\n _executePlan(matchedPlan) {\n let result = matchedPlan.execute(this._getResponseDoc(), this._onPlanApplicable.bind(this, matchedPlan));\n result.options = this.options;\n return result;\n }\n _isApplicablePlanError(error) {\n return !(error instanceof up.CannotMatch);\n }\n _onPlanApplicable(plan) {\n let primaryPlan = this._getPlans()[0];\n if (plan !== primaryPlan) {\n up.puts('up.render()', 'Could not match primary target \"%s\". Updating a fallback target \"%s\".', primaryPlan.target, plan.target);\n }\n let { assets } = this._getResponseDoc();\n if (assets) {\n up.script.assertAssetsOK(assets, plan.options);\n }\n this.options.onRender?.();\n }\n _getResponseDoc() {\n if (this._preview)\n return;\n const docOptions = u.pick(this.options, [\n 'target',\n 'content',\n 'fragment',\n 'document',\n 'html',\n 'cspNonces',\n 'origin',\n ]);\n up.migrate.handleResponseDocOptions?.(docOptions);\n if (this._defaultPlacement() === 'content') {\n docOptions.target = this._firstExpandedTarget(docOptions.target);\n }\n return new up.ResponseDoc(docOptions);\n }\n _improveOptionsFromResponseDoc() {\n if (this._preview)\n return;\n let responseDoc = this._getResponseDoc();\n if (this.options.fragment) {\n this.options.target ||= responseDoc.rootSelector();\n }\n this.options.title = this.improveHistoryValue(this.options.title, responseDoc.title);\n this.options.metaTags = this.improveHistoryValue(this.options.metaTags, responseDoc.metaTags);\n this.options.lang = this.improveHistoryValue(this.options.lang, responseDoc.lang);\n }\n _defaultPlacement() {\n if (!this.options.document && !this.options.fragment) {\n return 'content';\n }\n }\n _firstExpandedTarget(target) {\n let layer = this._layers[0] || up.layer.root;\n return this._expandTargets(target || ':main', layer)[0];\n }\n getPreflightProps(opts = {}) {\n const getPlanProps = plan => plan.getPreflightProps();\n return this._seekPlan(getPlanProps) || opts.optional || this._cannotMatchPreflightTarget();\n }\n _cannotMatchPreflightTarget() {\n this._cannotMatchTarget('Could not find target in current page');\n }\n _cannotMatchPostflightTarget() {\n this._cannotMatchTarget('Could not find common target in current page and response');\n }\n _cannotMatchTarget(reason) {\n if (this._getPlans().length) {\n const planTargets = u.uniq(u.map(this._getPlans(), 'target'));\n const humanizedLayerOption = up.layer.optionToString(this.options.layer);\n throw new up.CannotMatch([reason + \" (tried selectors %o in %s)\", planTargets, humanizedLayerOption]);\n }\n else if (this._layers.length === 0) {\n this._cannotMatchLayer();\n }\n else if (this.options.failPrefixForced) {\n throw new up.CannotMatch('No target selector given for failed responses (https://unpoly.com/failed-responses)');\n }\n else {\n throw new up.CannotMatch('No target selector given');\n }\n }\n _cannotMatchLayer() {\n throw new up.CannotMatch('Could not find a layer to render in. You may have passed an unmatchable layer reference, or a detached element.');\n }\n _seekPlan(fn) {\n for (let plan of this._getPlans()) {\n try {\n return fn(plan);\n }\n catch (error) {\n if (this._isApplicablePlanError(error)) {\n throw error;\n }\n }\n }\n }\n },\n (() => {\n u.memoizeMethod(_a.prototype, {\n _getPlans: true,\n _getResponseDoc: true,\n getPreflightProps: true,\n });\n })(),\n _a);\n\n\n/***/ }),\n/* 35 */\n/***/ (() => {\n\nconst u = up.util;\nup.CompilerPass = class CompilerPass {\n constructor(root, compilers, { layer, data, dataMap, meta }) {\n layer ||= up.layer.get(root) || up.layer.current;\n this._root = root;\n this._compilers = compilers;\n this._layer = layer;\n this._data = data;\n this._dataMap = dataMap;\n meta ||= {};\n meta.layer = layer;\n this._meta = meta;\n }\n run() {\n this._layer.asCurrent(() => {\n this.setCompileData();\n for (let compiler of this._compilers) {\n this._runCompiler(compiler);\n }\n });\n }\n setCompileData() {\n if (this._data) {\n this._root.upCompileData = this._data;\n }\n if (this._dataMap) {\n for (let selector in this._dataMap) {\n for (let match of this._select(selector)) {\n match.upCompileData = this._dataMap[selector];\n }\n }\n }\n }\n _runCompiler(compiler) {\n const matches = this._selectOnce(compiler);\n if (!matches.length) {\n return;\n }\n if (!compiler.isDefault) {\n up.puts('up.hello()', 'Compiling %d\u00D7 \"%s\" on %s', matches.length, compiler.selector, this._layer);\n }\n if (compiler.batch) {\n this._compileBatch(compiler, matches);\n }\n else {\n for (let match of matches) {\n this._compileOneElement(compiler, match);\n }\n }\n return up.migrate.postCompile?.(matches, compiler);\n }\n _compileOneElement(compiler, element) {\n const compileArgs = [element];\n if (compiler.length !== 1) {\n const data = up.script.data(element);\n compileArgs.push(data, this._meta);\n }\n const result = this._applyCompilerFunction(compiler, element, compileArgs);\n let destructorOrDestructors = this._destructorPresence(result);\n if (destructorOrDestructors) {\n up.destructor(element, destructorOrDestructors);\n }\n }\n _compileBatch(compiler, elements) {\n const compileArgs = [elements];\n if (compiler.length !== 1) {\n const dataList = u.map(elements, up.script.data);\n compileArgs.push(dataList, this._meta);\n }\n const result = this._applyCompilerFunction(compiler, elements, compileArgs);\n if (this._destructorPresence(result)) {\n up.fail('Compilers with { batch: true } cannot return destructors');\n }\n }\n _applyCompilerFunction(compiler, elementOrElements, compileArgs) {\n return up.error.guard(() => compiler.apply(elementOrElements, compileArgs));\n }\n _destructorPresence(result) {\n if (u.isFunction(result) || (u.isArray(result) && (u.every(result, u.isFunction)))) {\n return result;\n }\n }\n _select(selector) {\n return up.fragment.subtree(this._root, u.evalOption(selector), { layer: this._layer });\n }\n _selectOnce(compiler) {\n let matches = this._select(compiler.selector);\n return u.filter(matches, (element) => {\n let appliedCompilers = (element.upAppliedCompilers ||= new Set());\n if (!appliedCompilers.has(compiler)) {\n appliedCompilers.add(compiler);\n return true;\n }\n });\n }\n};\n\n\n/***/ }),\n/* 36 */\n/***/ (() => {\n\nconst u = up.util;\nconst e = up.element;\nup.CSSTransition = class CSSTransition {\n constructor(element, lastFrame, options) {\n this._element = element;\n this._lastFrame = lastFrame;\n this._lastFrameKeys = Object.keys(this._lastFrame);\n this._finishEvent = options.finishEvent;\n this._duration = options.duration;\n this._easing = options.easing;\n this._finished = false;\n }\n start() {\n if (this._lastFrameKeys.length === 0) {\n this._finished = true;\n return Promise.resolve();\n }\n this._deferred = u.newDeferred();\n this._pauseOldTransition();\n this._startTime = new Date();\n this._startFallbackTimer();\n this._listenToFinishEvent();\n this._listenToTransitionEnd();\n this._startMotion();\n return this._deferred;\n }\n _listenToFinishEvent() {\n if (this._finishEvent) {\n this._stopListenToFinishEvent = up.on(this._element, this._finishEvent, this._onFinishEvent.bind(this));\n }\n }\n _onFinishEvent(event) {\n event.stopPropagation();\n this._finish();\n }\n _startFallbackTimer() {\n const timingTolerance = 100;\n this._fallbackTimer = u.timer((this._duration + timingTolerance), () => this._finish());\n }\n _stopFallbackTimer() {\n clearTimeout(this._fallbackTimer);\n }\n _listenToTransitionEnd() {\n this._stopListenToTransitionEnd = up.on(this._element, 'transitionend', this._onTransitionEnd.bind(this));\n }\n _onTransitionEnd(event) {\n if (event.target !== this._element) {\n return;\n }\n const elapsed = new Date() - this._startTime;\n if (elapsed <= (0.25 * this._duration)) {\n return;\n }\n const completedProperty = event.propertyName;\n if (u.contains(this._lastFrameKeys, completedProperty)) {\n this._finish();\n }\n }\n _finish() {\n if (this._finished) {\n return;\n }\n this._finished = true;\n this._stopFallbackTimer();\n this._stopListenToFinishEvent?.();\n this._stopListenToTransitionEnd?.();\n e.concludeCSSTransition(this._element);\n this._resumeOldTransition();\n this._deferred.resolve();\n }\n _pauseOldTransition() {\n const oldTransition = e.style(this._element, [\n 'transition-property',\n 'transition-duration',\n 'transition-delay',\n 'transition-timing-function'\n ]);\n if (e.hasCSSTransition(oldTransition)) {\n if (oldTransition['transition-property'] !== 'all') {\n const oldTransitionProperties = oldTransition['transition-property'].split(/\\s*,\\s*/);\n const oldTransitionFrame = e.style(this._element, oldTransitionProperties);\n this._setOldTransitionTargetFrame = e.setTemporaryStyle(this._element, oldTransitionFrame);\n }\n this._setOldTransition = e.concludeCSSTransition(this._element);\n }\n }\n _resumeOldTransition() {\n this._setOldTransitionTargetFrame?.();\n this._setOldTransition?.();\n }\n _startMotion() {\n e.setStyle(this._element, {\n 'transition-property': this._lastFrameKeys.join(),\n 'transition-duration': `${this._duration}ms`,\n 'transition-timing-function': this._easing\n });\n e.setStyle(this._element, this._lastFrame);\n }\n};\n\n\n/***/ }),\n/* 37 */\n/***/ (() => {\n\nconst u = up.util;\nup.DestructorPass = class DestructorPass {\n constructor(fragment, options) {\n this._fragment = fragment;\n this._options = options;\n }\n run() {\n for (let cleanable of this._selectCleanables()) {\n let destructors = u.pluckKey(cleanable, 'upDestructors');\n if (destructors) {\n for (let destructor of destructors) {\n this._applyDestructorFunction(destructor, cleanable);\n }\n }\n cleanable.classList.remove('up-can-clean');\n }\n }\n _selectCleanables() {\n const selectOptions = { ...this._options, destroying: true };\n return up.fragment.subtree(this._fragment, '.up-can-clean', selectOptions);\n }\n _applyDestructorFunction(destructor, element) {\n up.error.guard(() => destructor(element));\n }\n};\n\n\n/***/ }),\n/* 38 */\n/***/ (() => {\n\nconst u = up.util;\nconst e = up.element;\nup.EventEmitter = class EventEmitter extends up.Record {\n keys() {\n return [\n 'target',\n 'event',\n 'baseLayer',\n 'callback',\n 'log',\n 'ensureBubbles',\n ];\n }\n emit() {\n this._logEmission();\n if (this.baseLayer) {\n this.baseLayer.asCurrent(() => this._dispatchEvent());\n }\n else {\n this._dispatchEvent();\n }\n return this.event;\n }\n _dispatchEvent() {\n this.target.dispatchEvent(this.event);\n if (this.ensureBubbles && !this.target.isConnected) {\n document.dispatchEvent(this.event);\n }\n up.error.guard(() => this.callback?.(this.event));\n }\n assertEmitted() {\n const event = this.emit();\n if (event.defaultPrevented) {\n throw new up.Aborted(`Event ${event.type} was prevented`);\n }\n }\n _logEmission() {\n if (!up.log.config.enabled) {\n return;\n }\n let message = this.log;\n let messageArgs;\n if (u.isArray(message)) {\n [message, ...messageArgs] = message;\n }\n else {\n messageArgs = [];\n }\n const { type } = this.event;\n if (u.isString(message)) {\n up.puts(type, message, ...messageArgs);\n }\n else if (message !== false) {\n up.puts(type, `Event ${type}`);\n }\n }\n static fromEmitArgs(args, defaults = {}) {\n let options = u.extractOptions(args);\n options = u.merge(defaults, options);\n if (u.isElementish(args[0])) {\n options.target = e.get(args.shift());\n }\n else if (args[0] instanceof up.Layer) {\n options.layer = args.shift();\n }\n let layer;\n if (u.isGiven(options.layer)) {\n layer = up.layer.get(options.layer);\n options.target ||= layer.element;\n options.baseLayer ||= layer;\n }\n if (options.baseLayer) {\n options.baseLayer = up.layer.get(options.baseLayer);\n }\n if (u.isString(options.target)) {\n options.target = up.fragment.get(options.target, { layer: options.layer });\n }\n else if (!options.target) {\n options.target = document;\n }\n if (args[0]?.preventDefault) {\n options.event = args[0];\n options.log ??= args[0].log;\n }\n else if (u.isString(args[0])) {\n options.event = up.event.build(args[0], options);\n }\n else {\n options.event = up.event.build(options);\n }\n return new (this)(options);\n }\n};\n\n\n/***/ }),\n/* 39 */\n/***/ (() => {\n\nconst u = up.util;\nup.EventListener = class EventListener extends up.Record {\n keys() {\n return [\n 'element',\n 'eventType',\n 'selector',\n 'callback',\n 'guard',\n 'baseLayer',\n 'passive',\n 'once',\n 'capture',\n 'beforeBoot',\n ];\n }\n constructor(attributes) {\n super(attributes);\n this._key = this.constructor._buildKey(attributes);\n this.isDefault = up.framework.evaling;\n this.beforeBoot ??= (this.eventType.indexOf('up:framework:') === 0);\n this.nativeCallback = this.nativeCallback.bind(this);\n }\n bind() {\n const map = (this.element.upEventListeners ||= {});\n if (map[this._key]) {\n up.fail('up.on(): The %o callback %o cannot be registered more than once', this.eventType, this.callback);\n }\n map[this._key] = this;\n this.element.addEventListener(...this._addListenerArg());\n }\n _addListenerArg() {\n let options = u.compactObject(u.pick(this, ['once', 'passive', 'capture']));\n return [this.eventType, this.nativeCallback, options];\n }\n unbind() {\n let map = this.element.upEventListeners;\n if (map) {\n delete map[this._key];\n }\n this.element.removeEventListener(...this._addListenerArg());\n }\n nativeCallback(event) {\n if (up.framework.beforeBoot && !this.beforeBoot) {\n return;\n }\n let element = event.target;\n if (this.selector) {\n element = element.closest(u.evalOption(this.selector));\n }\n if (this.guard && !this.guard(event)) {\n return;\n }\n if (element) {\n const args = [event, element];\n const expectedArgCount = this.callback.length;\n if (expectedArgCount !== 1 && expectedArgCount !== 2) {\n const data = up.script.data(element);\n args.push(data);\n }\n if (this.eventType === 'click' && element.disabled) {\n return;\n }\n const applyCallback = this.callback.bind(element, ...args);\n if (this.baseLayer) {\n this.baseLayer.asCurrent(applyCallback);\n }\n else {\n applyCallback();\n }\n }\n }\n static fromElement(attributes) {\n let map = attributes.element.upEventListeners;\n if (map) {\n const key = this._buildKey(attributes);\n return map[key];\n }\n }\n static _buildKey(attributes) {\n attributes.callback.upUid ||= u.uid();\n return [\n attributes.eventType,\n attributes.selector,\n attributes.callback.upUid\n ].join('|');\n }\n static allNonDefault(element) {\n let map = element.upEventListeners;\n if (map) {\n const listeners = Object.values(map);\n return u.reject(listeners, 'isDefault');\n }\n else {\n return [];\n }\n }\n};\n\n\n/***/ }),\n/* 40 */\n/***/ (() => {\n\nconst u = up.util;\nup.EventListenerGroup = class EventListenerGroup extends up.Record {\n keys() {\n return [\n 'elements',\n 'eventTypes',\n 'selector',\n 'callback',\n 'guard',\n 'baseLayer',\n 'passive',\n 'once',\n 'capture',\n 'beforeBoot',\n ];\n }\n bind() {\n const unbindFns = [];\n this._eachListenerAttributes(function (attrs) {\n const listener = new up.EventListener(attrs);\n listener.bind();\n return unbindFns.push(listener.unbind.bind(listener));\n });\n return u.sequence(unbindFns);\n }\n _eachListenerAttributes(fn) {\n for (let element of this.elements) {\n for (let eventType of this.eventTypes) {\n fn(this._listenerAttributes(element, eventType));\n }\n }\n }\n _listenerAttributes(element, eventType) {\n return { ...this.attributes(), element, eventType };\n }\n unbind() {\n this._eachListenerAttributes(function (attrs) {\n let listener = up.EventListener.fromElement(attrs);\n if (listener) {\n listener.unbind();\n }\n });\n }\n static fromBindArgs(args, defaults) {\n args = u.copy(args);\n const callback = args.pop();\n let elements;\n if (args[0].addEventListener) {\n elements = [args.shift()];\n }\n else if (u.isJQuery(args[0]) || (u.isList(args[0]) && args[0][0].addEventListener)) {\n elements = args.shift();\n }\n else {\n elements = [document];\n }\n let eventTypes = u.parseTokens(args.shift());\n let fixTypes = up.migrate.fixEventTypes;\n if (fixTypes) {\n eventTypes = fixTypes(eventTypes);\n }\n const options = u.extractOptions(args);\n const selector = args[0];\n const attributes = { elements, eventTypes, selector, callback, ...options, ...defaults };\n return new (this)(attributes);\n }\n};\n\n\n/***/ }),\n/* 41 */\n/***/ (() => {\n\nconst u = up.util;\nup.FieldWatcher = class FieldWatcher {\n constructor(root, options, callback) {\n this._options = options;\n this._root = root;\n this._scope = up.form.getScope(root);\n this._callback = callback;\n this._batch = options.batch;\n this._abortable = options.abortable;\n }\n start() {\n this._scheduledValues = null;\n this._processedValues = this._readFieldValues();\n this._currentTimer = null;\n this._callbackRunning = false;\n this._unbindFns = [];\n this._watchFieldsWithin(this._root);\n this._root.addEventListener('up:fragment:inserted', ({ target }) => {\n if (target !== this._root)\n this._watchFieldsWithin(target);\n });\n this._unbindFns.push(up.fragment.onAborted(this._scope, () => this._abort()));\n this._unbindFns.push(up.on(this._scope, 'reset', () => this._onFormReset()));\n }\n stop() {\n this._abort();\n for (let unbindFn of this._unbindFns)\n unbindFn();\n }\n _fieldOptions(field) {\n let rootOptions = u.copy(this._options);\n return up.form.watchOptions(field, rootOptions, { defaults: { event: 'input' } });\n }\n _watchFieldsWithin(container) {\n for (let field of up.form.fields(container)) {\n this._watchField(field);\n }\n }\n _watchField(field) {\n let fieldOptions = this._fieldOptions(field);\n this._unbindFns.push(up.on(field, fieldOptions.event, () => this._check(fieldOptions)));\n }\n _abort() {\n this._scheduledValues = null;\n }\n _scheduleValues(values, fieldOptions) {\n this._scheduledValues = values;\n this._scheduledFieldOptions = fieldOptions;\n let delay = fieldOptions.delay || 0;\n clearTimeout(this._currentTimer);\n this._currentTimer = u.timer(delay, () => {\n this._currentTimer = null;\n this._requestCallback();\n });\n }\n _isNewValues(values) {\n return !u.isEqual(values, this._processedValues) && !u.isEqual(this._scheduledValues, values);\n }\n async _requestCallback() {\n if (!this._scheduledValues)\n return;\n if (this._callbackRunning)\n return;\n if (this._currentTimer)\n return;\n if (!this._scope.isConnected)\n return;\n let fieldOptions = this._scheduledFieldOptions;\n const diff = this._changedValues(this._processedValues, this._scheduledValues);\n this._processedValues = this._scheduledValues;\n this._scheduledValues = null;\n this._callbackRunning = true;\n this._scheduledFieldOptions = null;\n let callbackOptions = { ...fieldOptions, disable: false };\n const callbackReturnValues = [];\n if (this._batch) {\n callbackReturnValues.push(this._runCallback(diff, callbackOptions));\n }\n else {\n for (let name in diff) {\n const value = diff[name];\n callbackReturnValues.push(this._runCallback(value, name, callbackOptions));\n }\n }\n if (u.some(callbackReturnValues, u.isPromise)) {\n let callbackDone = Promise.allSettled(callbackReturnValues);\n up.form.disableWhile(callbackDone, fieldOptions);\n await callbackDone;\n }\n this._callbackRunning = false;\n this._requestCallback();\n }\n _runCallback(...args) {\n return up.error.guard(() => this._callback(...args));\n }\n _changedValues(previous, next) {\n const changes = {};\n let keys = Object.keys(previous);\n keys = keys.concat(Object.keys(next));\n keys = u.uniq(keys);\n for (let key of keys) {\n const previousValue = previous[key];\n const nextValue = next[key];\n if (!u.isEqual(previousValue, nextValue)) {\n changes[key] = nextValue;\n }\n }\n return changes;\n }\n _readFieldValues() {\n return up.Params.fromContainer(this._root).toObject();\n }\n _check(fieldOptions = {}) {\n const values = this._readFieldValues();\n if (this._isNewValues(values)) {\n this._scheduleValues(values, fieldOptions);\n }\n }\n _onFormReset() {\n u.task(() => this._check());\n }\n};\n\n\n/***/ }),\n/* 42 */\n/***/ (() => {\n\nconst u = up.util;\nconst e = up.element;\nup.FormValidator = class FormValidator {\n constructor(form) {\n this._form = form;\n this._dirtySolutions = [];\n this._nextRenderTimer = null;\n this._rendering = false;\n this._resetNextRenderPromise();\n this._honorAbort();\n }\n _honorAbort() {\n up.fragment.onAborted(this._form, (event) => this._onAborted(event));\n }\n _onAborted(event) {\n if (this._dirtySolutions.length) {\n this._dirtySolutions = [];\n this._nextRenderPromise.reject(new up.Aborted(event.reason));\n this._resetNextRenderPromise();\n }\n }\n _resetNextRenderPromise() {\n this._nextRenderPromise = u.newDeferred();\n }\n watchContainer(fieldOrForm) {\n let { event } = this._originOptions(fieldOrForm);\n let guard = () => up.fragment.isAlive(fieldOrForm);\n let callback = () => up.error.muteUncriticalRejection(this.validate({ origin: fieldOrForm }));\n up.on(fieldOrForm, event, { guard }, callback);\n }\n validate(options = {}) {\n let solutions = this._getSolutions(options);\n this._dirtySolutions.push(...solutions);\n this._scheduleNextRender();\n return this._nextRenderPromise;\n }\n _getSolutions(options) {\n let solutions = this._getTargetSelectorSolutions(options)\n || this._getFieldSolutions(options)\n || this._getElementSolutions(options.origin);\n for (let solution of solutions) {\n solution.renderOptions = this._originOptions(solution.origin, options);\n solution.target = up.fragment.resolveOrigin(solution.target, solution);\n }\n return solutions;\n }\n _getFieldSolutions({ origin, ...options }) {\n if (up.form.isField(origin)) {\n return this._getValidateAttrSolutions(origin) || this._getFormGroupSolutions(origin, options);\n }\n }\n _getFormGroupSolutions(field, { formGroup = true }) {\n if (!formGroup)\n return;\n let solution = up.form.groupSolution(field);\n if (solution) {\n up.puts('up.validate()', 'Validating form group of field %o', field);\n return [solution];\n }\n }\n _getTargetSelectorSolutions({ target, origin }) {\n if (u.isString(target)) {\n up.puts('up.validate()', 'Validating target \"%s\"', target);\n let simpleSelectors = up.fragment.splitTarget(target);\n return u.compact(simpleSelectors.map(function (simpleSelector) {\n let element = up.fragment.get(simpleSelector, { origin });\n if (element) {\n return {\n element,\n target: simpleSelector,\n origin\n };\n }\n else {\n up.fail('Validation target \"%s\" does not match an element', simpleSelector);\n }\n }));\n }\n }\n _getElementSolutions(element) {\n up.puts('up.validate()', 'Validating element %o', element);\n return [{\n element,\n target: up.fragment.toTarget(element),\n origin: element\n }];\n }\n _getValidateAttrSolutions(field) {\n let containerWithAttr = field.closest('[up-validate]');\n if (containerWithAttr) {\n let target = e.booleanOrStringAttr(containerWithAttr, 'up-validate');\n return this._getTargetSelectorSolutions({ target, origin: field });\n }\n }\n _originOptions(element, overrideOptions) {\n return up.form.watchOptions(element, overrideOptions, { defaults: { event: 'change' } });\n }\n _scheduleNextRender() {\n let solutionDelays = this._dirtySolutions.map((solution) => solution.renderOptions.delay);\n let shortestDelay = Math.min(...solutionDelays) || 0;\n clearTimeout(this._nextRenderTimer);\n this._nextRenderTimer = u.timer(shortestDelay, () => {\n this._nextRenderTimer = null;\n this._renderDirtySolutions();\n });\n }\n _renderDirtySolutions() {\n up.error.muteUncriticalRejection(this._doRenderDirtySolutions());\n }\n async _doRenderDirtySolutions() {\n if (!this._dirtySolutions.length)\n return;\n if (this._rendering)\n return;\n if (this._nextRenderTimer)\n return;\n let dirtySolutions = this._dirtySolutions;\n this._dirtySolutions = [];\n let dirtyOrigins = u.map(dirtySolutions, 'origin');\n let dirtyFields = u.flatMap(dirtyOrigins, up.form.fields);\n let dirtyNames = u.uniq(u.map(dirtyFields, 'name'));\n let dataMap = this._buildDataMap(dirtySolutions);\n let dirtyRenderOptionsList = u.map(dirtySolutions, 'renderOptions');\n let options = u.mergeDefined(...dirtyRenderOptionsList, { dataMap }, up.form.destinationOptions(this._form));\n options.target = u.map(dirtySolutions, 'target').join(', ');\n options.feedback = u.some(dirtyRenderOptionsList, 'feedback');\n options.origin = this._form;\n options.focus ??= 'keep';\n options.failOptions = false;\n options.defaultMaybe = true;\n options.params = up.Params.merge(options.params, ...u.map(dirtyRenderOptionsList, 'params'));\n options.headers = u.merge(...u.map(dirtyRenderOptionsList, 'headers'));\n this._addValidateHeader(options.headers, dirtyNames);\n options.guardEvent = up.event.build('up:form:validate', {\n fields: dirtyFields,\n log: 'Validating form',\n params: options.params,\n form: this._form,\n });\n this._rendering = true;\n let renderingPromise = this._nextRenderPromise;\n this._resetNextRenderPromise();\n options.disable = false;\n for (let solution of dirtySolutions) {\n up.form.disableWhile(renderingPromise, {\n disable: solution.renderOptions.disable,\n origin: solution.origin,\n });\n }\n try {\n renderingPromise.resolve(up.render(options));\n await renderingPromise;\n }\n finally {\n this._rendering = false;\n this._renderDirtySolutions();\n }\n }\n _addValidateHeader(headers, names) {\n let key = up.protocol.headerize('validate');\n let value = names.join(' ');\n if (!value || value.length > up.protocol.config.maxHeaderSize)\n value = ':unknown';\n headers[key] = value;\n }\n _buildDataMap(solutions) {\n let dataMap = {};\n for (let solution of solutions) {\n let data = u.pluckKey(solution.renderOptions, 'data');\n let keepData = u.pluckKey(solution.renderOptions, 'keepData');\n if (keepData) {\n data = up.data(solution.element);\n }\n if (data) {\n dataMap[solution.target] = data;\n }\n }\n return dataMap;\n }\n static forElement(element) {\n let form = up.form.get(element);\n return form.upFormValidator ||= new this(form);\n }\n};\n\n\n/***/ }),\n/* 43 */\n/***/ (() => {\n\nup.FocusCapsule = class FocusCapsule {\n constructor(target, cursorProps) {\n this._target = target;\n this._cursorProps = cursorProps;\n }\n restore(layer, options) {\n let rediscoveredElement = up.fragment.get(this._target, { layer });\n if (rediscoveredElement) {\n up.viewport.copyCursorProps(this._cursorProps, rediscoveredElement);\n up.focus(rediscoveredElement, options);\n return true;\n }\n }\n static preserve(layer) {\n let focusedElement = up.viewport.focusedElementWithin(layer.element);\n if (!focusedElement)\n return;\n let target = up.fragment.tryToTarget(focusedElement);\n if (!target)\n return;\n const cursorProps = up.viewport.copyCursorProps(focusedElement);\n return new this(target, cursorProps);\n }\n};\n\n\n/***/ }),\n/* 44 */\n/***/ (() => {\n\nconst u = up.util;\nup.FragmentProcessor = class FragmentProcessor extends up.Record {\n keys() {\n return [\n 'fragment',\n 'autoMeans',\n 'origin',\n 'layer'\n ];\n }\n process(opt) {\n let preprocessed = this.preprocess(opt);\n return this.tryProcess(preprocessed);\n }\n preprocess(opt) {\n return u.parseTokens(opt, { separator: 'or' });\n }\n tryProcess(opt) {\n if (u.isArray(opt)) {\n return this.processArray(opt);\n }\n if (u.isFunction(opt)) {\n let result = up.error.guard(() => opt(this.fragment, this.attributes()));\n return this.tryProcess(result);\n }\n if (u.isElement(opt)) {\n return this.processElement(opt);\n }\n if (u.isString(opt)) {\n if (opt === 'auto') {\n return this.tryProcess(this.autoMeans);\n }\n let match = opt.match(/^(.+?)-if-(.+?)$/);\n if (match) {\n return this.resolveCondition(match[2]) && this.process(match[1]);\n }\n }\n return this.processPrimitive(opt);\n }\n processArray(array) {\n return u.find(array, opt => this.tryProcess(opt));\n }\n resolveCondition(condition) {\n if (condition === 'main') {\n return this.fragment && up.fragment.contains(this.fragment, ':main');\n }\n }\n findSelector(selector) {\n const lookupOpts = { layer: this.layer, origin: this.origin };\n let matchWithinFragment = this.fragment && up.fragment.get(this.fragment, selector, lookupOpts);\n let match = matchWithinFragment || up.fragment.get(selector, lookupOpts);\n if (match) {\n return match;\n }\n else {\n up.warn('up.render()', 'Could not find an element matching \"%s\"', selector);\n }\n }\n};\n\n\n/***/ }),\n/* 45 */\n/***/ (() => {\n\nconst u = up.util;\nconst DESCENDANT_SELECTOR = /^([^ >+(]+) (.+)$/;\nup.FragmentFinder = class FragmentFinder {\n constructor(options) {\n this._options = options;\n this._origin = options.origin;\n this._selector = options.selector;\n this._document = options.document || window.document;\n this._match = options.match ?? up.fragment.config.match;\n this._preferOldElements = options.preferOldElements;\n }\n find() {\n return this._findInPreferredElements() || this._findInRegion() || this._findFirst();\n }\n _findInPreferredElements() {\n if (this._preferOldElements) {\n return this._preferOldElements.find((preferOldElement) => this._document.contains(preferOldElement) && up.fragment.matches(preferOldElement, this._selector));\n }\n }\n _findInRegion() {\n if (this._match === 'region' && !up.fragment.containsMainPseudo(this._selector) && this._origin?.isConnected) {\n return this._findClosest() || this._findDescendantInRegion();\n }\n }\n _findClosest() {\n return up.fragment.closest(this._origin, this._selector, this._options);\n }\n _findDescendantInRegion() {\n let simpleSelectors = up.fragment.splitTarget(this._selector);\n return u.findResult(simpleSelectors, (simpleSelector) => {\n let parts = simpleSelector.match(DESCENDANT_SELECTOR);\n if (parts) {\n let parent = up.fragment.closest(this._origin, parts[1], this._options);\n if (parent) {\n return up.fragment.getDumb(parent, parts[2]);\n }\n }\n });\n }\n _findFirst() {\n return up.fragment.getDumb(this._document, this._selector, this._options);\n }\n};\n\n\n/***/ }),\n/* 46 */\n/***/ (() => {\n\nconst u = up.util;\nconst e = up.element;\nconst PREVENT_SCROLL_OPTIONS = { preventScroll: true };\nup.FragmentFocus = class FragmentFocus extends up.FragmentProcessor {\n keys() {\n return super.keys().concat([\n 'hash',\n 'focusCapsule',\n 'inputDevice',\n ]);\n }\n processPrimitive(opt) {\n switch (opt) {\n case 'keep':\n return this._restoreLostFocus();\n case 'restore':\n return this._restorePreviousFocusForLocation();\n case 'target':\n case true:\n return this._focusElement(this.fragment);\n case 'layer':\n return this._focusElement(this.layer.getFocusElement());\n case 'main':\n return this._focusSelector(':main');\n case 'hash':\n return this._focusHash();\n case 'autofocus':\n return this._autofocus();\n default:\n if (u.isString(opt)) {\n return this._focusSelector(opt);\n }\n }\n }\n processElement(element) {\n return this._focusElement(element);\n }\n resolveCondition(condition) {\n if (condition === 'lost') {\n return this._wasFocusLost();\n }\n else {\n return super.resolveCondition(condition);\n }\n }\n _focusSelector(selector) {\n let match = this.findSelector(selector);\n return this._focusElement(match);\n }\n _restoreLostFocus() {\n if (this._wasFocusLost()) {\n return this.focusCapsule?.restore(this.layer, PREVENT_SCROLL_OPTIONS);\n }\n }\n _restorePreviousFocusForLocation() {\n return up.viewport.restoreFocus({ layer: this.layer });\n }\n _autofocus() {\n let autofocusElement = this.fragment && e.subtree(this.fragment, '[autofocus]')[0];\n if (autofocusElement) {\n return this._focusElement(autofocusElement);\n }\n }\n _focusElement(element) {\n if (element) {\n up.focus(element, { force: true, ...PREVENT_SCROLL_OPTIONS, inputDevice: this.inputDevice });\n return true;\n }\n }\n _focusHash() {\n let hashTarget = up.viewport.firstHashTarget(this.hash, { layer: this.layer });\n if (hashTarget) {\n return this._focusElement(hashTarget);\n }\n }\n _wasFocusLost() {\n return !this.layer.hasFocus();\n }\n};\n\n\n/***/ }),\n/* 47 */\n/***/ (() => {\n\nconst e = up.element;\nup.FragmentPolling = class FragmentPolling {\n constructor(fragment) {\n this._options = up.radio.pollOptions(fragment);\n this._fragment = fragment;\n up.destructor(fragment, this._onFragmentDestroyed.bind(this));\n up.fragment.onAborted(fragment, this._onFragmentAborted.bind(this));\n this._state = 'initialized';\n this._abortable = true;\n this._loading = false;\n this._satisfyInterval();\n }\n static forFragment(fragment) {\n return fragment.upPolling ||= new this(fragment);\n }\n onPollAttributeObserved() {\n this._start();\n }\n _onFragmentDestroyed() {\n this._stop();\n }\n _start(options) {\n Object.assign(this._options, options);\n if (this._state !== 'started') {\n if (!up.fragment.isTargetable(this._fragment)) {\n up.warn('[up-poll]', 'Cannot poll untargetable fragment %o', this._fragment);\n return;\n }\n this._state = 'started';\n this._ensureEventsBound();\n this._scheduleRemainingTime();\n }\n }\n _stop() {\n if (this._state === 'started') {\n this._clearReloadTimer();\n this._state = 'stopped';\n this.unbindEvents?.();\n }\n }\n forceStart(options) {\n Object.assign(this._options, options);\n this.forceStarted = true;\n this._start();\n }\n forceStop() {\n this._stop();\n this.forceStarted = false;\n }\n _ensureEventsBound() {\n if (!this.unbindEvents) {\n this.unbindEvents = up.on('visibilitychange up:layer:opened up:layer:dismissed up:layer:accepted', this._onVisibilityChange.bind(this));\n }\n }\n _onVisibilityChange() {\n if (this._isFragmentVisible()) {\n this._scheduleRemainingTime();\n }\n else {\n }\n }\n _isFragmentVisible() {\n return (!document.hidden) &&\n (this._options.ifLayer === 'any' || this._isOnFrontLayer());\n }\n _clearReloadTimer() {\n clearTimeout(this.reloadTimer);\n this.reloadTimer = null;\n }\n _scheduleRemainingTime() {\n if (!this.reloadTimer && !this._loading) {\n this._clearReloadTimer();\n this.reloadTimer = setTimeout(this._onTimerReached.bind(this), this._getRemainingDelay());\n }\n }\n _onTimerReached() {\n this.reloadTimer = null;\n this._tryReload();\n }\n _tryReload() {\n if (this._state !== 'started') {\n return;\n }\n if (!this._isFragmentVisible()) {\n up.puts('[up-poll]', 'Will not poll hidden fragment');\n return;\n }\n this._reloadNow();\n }\n _getFullDelay() {\n return this._options.interval ?? e.numberAttr(this._fragment, 'up-interval') ?? up.radio.config.pollInterval;\n }\n _getRemainingDelay() {\n return Math.max(this._getFullDelay() - this._getFragmentAge(), 0);\n }\n _getFragmentAge() {\n return new Date() - this._lastAttempt;\n }\n _isOnFrontLayer() {\n this.layer ||= up.layer.get(this._fragment);\n return this.layer?.isFront?.();\n }\n _reloadNow() {\n this._clearReloadTimer();\n let oldAbortable = this._abortable;\n try {\n this._abortable = false;\n this._loading = true;\n up.reload(this._fragment, this._reloadOptions()).then(this._onReloadSuccess.bind(this), this._onReloadFailure.bind(this));\n }\n finally {\n this._abortable = oldAbortable;\n }\n }\n _reloadOptions() {\n let guardEvent = up.event.build('up:fragment:poll', { log: ['Polling fragment', this._fragment] });\n return { ...this._options, guardEvent };\n }\n _onFragmentAborted({ newLayer }) {\n if (this._abortable && !newLayer) {\n this._stop();\n }\n }\n _onReloadSuccess({ fragment }) {\n this._loading = false;\n this._satisfyInterval();\n if (fragment) {\n this._onFragmentSwapped(fragment);\n }\n else {\n this._scheduleRemainingTime();\n }\n }\n _onFragmentSwapped(newFragment) {\n this._stop();\n if (this.forceStarted && up.fragment.matches(this._fragment, newFragment)) {\n this.constructor.forFragment(newFragment).forceStart(this._options);\n }\n }\n _onReloadFailure(reason) {\n this._loading = false;\n this._satisfyInterval();\n this._scheduleRemainingTime();\n up.error.throwCritical(reason);\n }\n _satisfyInterval() {\n this._lastAttempt = new Date();\n }\n};\n\n\n/***/ }),\n/* 48 */\n/***/ (() => {\n\nconst u = up.util;\nup.FragmentScrolling = class FragmentScrolling extends up.FragmentProcessor {\n keys() {\n return super.keys().concat([\n 'hash',\n 'mode',\n 'revealTop',\n 'revealMax',\n 'revealSnap',\n 'scrollBehavior',\n ]);\n }\n processPrimitive(opt) {\n switch (opt) {\n case 'reset':\n return this._reset();\n case 'layer':\n return this._revealLayer();\n case 'main':\n return this._revealSelector(':main');\n case 'restore':\n return this._restore();\n case 'hash':\n return this.hash && up.viewport.revealHash(this.hash, this.attributes());\n case 'target':\n case 'reveal':\n case true:\n return this._revealElement(this.fragment);\n default:\n if (u.isString(opt)) {\n return this._revealSelector(opt);\n }\n }\n }\n processElement(element) {\n return this._revealElement(element);\n }\n _revealElement(element) {\n if (element) {\n up.reveal(element, this.attributes());\n return true;\n }\n }\n _revealSelector(selector) {\n let match = this.findSelector(selector);\n return this._revealElement(match);\n }\n _revealLayer() {\n return this._revealElement(this.layer.getBoxElement());\n }\n _reset() {\n up.viewport.resetScroll({ ...this.attributes(), around: this.fragment });\n return true;\n }\n _restore() {\n return up.viewport.restoreScroll({ ...this.attributes(), around: this.fragment });\n }\n};\n\n\n/***/ }),\n/* 49 */\n/***/ (() => {\n\nconst e = up.element;\nconst u = up.util;\nup.Layer = class Layer extends up.Record {\n keys() {\n return [\n 'element',\n 'stack',\n 'history',\n 'mode',\n 'context',\n 'lastScrollTops',\n 'lastFocusCapsules',\n ];\n }\n defaults() {\n return {\n context: {},\n lastScrollTops: up.viewport.newStateCache(),\n lastFocusCapsules: up.viewport.newStateCache()\n };\n }\n constructor(options = {}) {\n super(options);\n if (!this.mode) {\n throw \"missing { mode } option\";\n }\n }\n setupHandlers() {\n up.link.convertClicks(this);\n }\n teardownHandlers() { }\n mainTargets() {\n return up.layer.mainTargets(this.mode);\n }\n sync() {\n }\n accept() {\n throw new up.NotImplemented();\n }\n dismiss() {\n throw new up.NotImplemented();\n }\n peel(options) {\n this.stack.peel(this, options);\n }\n evalOption(option) {\n return u.evalOption(option, this);\n }\n isCurrent() {\n return this.stack.isCurrent(this);\n }\n isFront() {\n return this.stack.isFront(this);\n }\n isRoot() {\n return this.stack.isRoot(this);\n }\n isOverlay() {\n return this.stack.isOverlay(this);\n }\n isOpen() {\n return this.stack.isOpen(this);\n }\n isClosed() {\n return this.stack.isClosed(this);\n }\n get parent() {\n return this.stack.parentOf(this);\n }\n get child() {\n return this.stack.childOf(this);\n }\n get ancestors() {\n return this.stack.ancestorsOf(this);\n }\n get descendants() {\n return this.stack.descendantsOf(this);\n }\n get subtree() {\n return [this, ...this.descendants];\n }\n get index() {\n return this._index ??= this.stack.indexOf(this);\n }\n getContentElement() {\n return this.contentElement || this.element;\n }\n getBoxElement() {\n return this.boxElement || this.element;\n }\n getFocusElement() {\n return this.getBoxElement();\n }\n getFirstSwappableElement() {\n throw new up.NotImplemented();\n }\n contains(element) {\n return element.closest(up.layer.anySelector()) === this.element;\n }\n on(...args) {\n return this._buildEventListenerGroup(args).bind();\n }\n off(...args) {\n return this._buildEventListenerGroup(args).unbind();\n }\n _buildEventListenerGroup(args) {\n return up.EventListenerGroup.fromBindArgs(args, {\n guard: (event) => this._containsEventTarget(event),\n elements: [this.element],\n baseLayer: this\n });\n }\n _containsEventTarget(event) {\n return this.contains(event.target);\n }\n wasHitByMouseEvent({ clientX, clientY }) {\n const hittableElement = document.elementFromPoint(clientX, clientY);\n return !hittableElement || this.contains(hittableElement);\n }\n _buildEventEmitter(args) {\n return up.EventEmitter.fromEmitArgs(args, { layer: this });\n }\n emit(...args) {\n return this._buildEventEmitter(args).emit();\n }\n isDetached() {\n return !this.element.isConnected;\n }\n saveHistory() {\n if (this.history) {\n this.savedTitle = document.title;\n this.savedMetaTags = up.history.findMetaTags();\n this.savedLocation = up.history.location;\n this.savedLang = up.history.getLang();\n }\n }\n restoreHistory() {\n if (!this.showsLiveHistory()) {\n return;\n }\n if (this.savedLocation) {\n up.history.push(this.savedLocation);\n }\n if (this.savedTitle) {\n document.title = this.savedTitle;\n }\n if (this.savedMetaTags) {\n up.history.updateMetaTags(this.savedMetaTags);\n }\n if (u.isString(this.savedLang)) {\n up.history.updateLang(this.savedLang);\n }\n }\n asCurrent(fn) {\n return this.stack.asCurrent(this, fn);\n }\n updateHistory(options) {\n if (u.isString(options.location)) {\n this.location = options.location;\n }\n if (up.history.config.updateMetaTags && u.isList(options.metaTags)) {\n up.migrate?.warnOfHungryMetaTags?.(options.metaTags);\n this.metaTags = options.metaTags;\n }\n if (u.isString(options.title)) {\n this.title = options.title;\n }\n if (u.isString(options.lang)) {\n this.lang = options.lang;\n }\n }\n showsLiveHistory() {\n return this.history && this.isFront();\n }\n get title() {\n if (this.showsLiveHistory()) {\n return document.title;\n }\n else {\n return this.savedTitle;\n }\n }\n set title(title) {\n this.savedTitle = title;\n if (this.showsLiveHistory()) {\n document.title = title;\n }\n }\n get metaTags() {\n if (this.showsLiveHistory()) {\n return up.history.findMetaTags();\n }\n else {\n return this.savedMetaTags;\n }\n }\n set metaTags(metaTags) {\n this.savedMetaTags = metaTags;\n if (this.showsLiveHistory()) {\n up.history.updateMetaTags(metaTags);\n }\n }\n get lang() {\n if (this.showsLiveHistory()) {\n return up.history.getLang();\n }\n else {\n return this.savedLang;\n }\n }\n set lang(lang) {\n this.savedLang = lang;\n if (this.showsLiveHistory()) {\n up.history.updateLang(lang);\n }\n }\n get location() {\n if (this.showsLiveHistory()) {\n return up.history.location;\n }\n else {\n return this.savedLocation;\n }\n }\n set location(location) {\n const previousLocation = this.location;\n location = u.normalizeURL(location);\n if (previousLocation !== location || this.opening) {\n this.savedLocation = location;\n if (this.showsLiveHistory()) {\n up.history.push(location);\n }\n if (!this.opening) {\n this.emit('up:layer:location:changed', { location });\n }\n }\n }\n selector(part) {\n return this.constructor.selector(part);\n }\n static selector(_part) {\n throw new up.NotImplemented();\n }\n toString() {\n throw new up.NotImplemented();\n }\n affix(...args) {\n return e.affix(this.getFirstSwappableElement(), ...args);\n }\n [u.isEqual.key](other) {\n return (this.constructor === other.constructor) && (this.element === other.element);\n }\n hasFocus() {\n let focusedElement = document.activeElement;\n return focusedElement !== document.body && this.element.contains(focusedElement);\n }\n reset() {\n Object.assign(this, this.defaults());\n }\n};\n\n\n/***/ }),\n/* 50 */\n/***/ (() => {\n\nconst e = up.element;\nconst u = up.util;\nup.Layer.Overlay = class Overlay extends up.Layer {\n keys() {\n return super.keys().concat([\n 'position',\n 'align',\n 'size',\n 'origin',\n 'class',\n 'backdrop',\n 'openAnimation',\n 'closeAnimation',\n 'openDuration',\n 'closeDuration',\n 'openEasing',\n 'closeEasing',\n 'backdropOpenAnimation',\n 'backdropCloseAnimation',\n 'dismissable',\n 'dismissLabel',\n 'dismissAriaLabel',\n 'onOpened',\n 'onAccept',\n 'onAccepted',\n 'onDismiss',\n 'onDismissed',\n 'acceptEvent',\n 'dismissEvent',\n 'acceptLocation',\n 'dismissLocation',\n 'opening'\n ]);\n }\n constructor(options) {\n super(options);\n if (this.dismissable === true) {\n this.dismissable = ['button', 'key', 'outside'];\n }\n else if (this.dismissable === false) {\n this.dismissable = [];\n }\n else {\n this.dismissable = u.parseTokens(this.dismissable);\n }\n if (this.acceptLocation) {\n this.acceptLocation = new up.URLPattern(this.acceptLocation);\n }\n if (this.dismissLocation) {\n this.dismissLocation = new up.URLPattern(this.dismissLocation);\n }\n }\n callback(name) {\n let fn = this[name];\n if (fn) {\n return fn.bind(this);\n }\n }\n createElement(parentElement) {\n this.nesting ||= this._suggestVisualNesting();\n const elementAttrs = u.compactObject(u.pick(this, ['align', 'position', 'size', 'class', 'nesting']));\n this.element = this.affixPart(parentElement, null, elementAttrs);\n }\n createBackdropElement(parentElement) {\n this.backdropElement = this.affixPart(parentElement, 'backdrop');\n }\n createViewportElement(parentElement) {\n this.viewportElement = this.affixPart(parentElement, 'viewport', { 'up-viewport': '' });\n }\n createBoxElement(parentElement) {\n this.boxElement = this.affixPart(parentElement, 'box');\n }\n createContentElement(parentElement) {\n this.contentElement = this.affixPart(parentElement, 'content');\n }\n setContent(content) {\n this.contentElement.append(content);\n this.onContentSet();\n }\n onContentSet() {\n }\n createDismissElement(parentElement) {\n this.dismissElement = this.affixPart(parentElement, 'dismiss', {\n 'up-dismiss': '\":button\"',\n 'aria-label': this.dismissAriaLabel\n });\n return e.affix(this.dismissElement, 'span[aria-hidden=\"true\"]', { text: this.dismissLabel });\n }\n affixPart(parentElement, part, options = {}) {\n return e.affix(parentElement, this.selector(part), options);\n }\n static selector(part) {\n return u.compact(['up', this.mode, part]).join('-');\n }\n _suggestVisualNesting() {\n const { parent } = this;\n if (this.mode === parent.mode) {\n return 1 + parent._suggestVisualNesting();\n }\n else {\n return 0;\n }\n }\n setupHandlers() {\n super.setupHandlers();\n this.overlayFocus = new up.OverlayFocus(this);\n if (this._supportsDismissMethod('button')) {\n this.createDismissElement(this.getBoxElement());\n }\n if (this._supportsDismissMethod('outside')) {\n if (this.viewportElement) {\n up.on(this.viewportElement, 'up:click', event => {\n if (event.target === this.viewportElement) {\n this._onOutsideClicked(event, true);\n }\n });\n }\n else {\n this.unbindParentClicked = this.parent.on('up:click', (event, element) => {\n if (!up.layer.isWithinForeignOverlay(element)) {\n const originClicked = this.origin && this.origin.contains(element);\n this._onOutsideClicked(event, originClicked);\n }\n });\n }\n }\n if (this._supportsDismissMethod('key')) {\n this.unbindEscapePressed = up.event.onEscape(event => this.onEscapePressed(event));\n }\n this.registerClickCloser('up-accept', (value, closeOptions) => {\n this.accept(value, closeOptions);\n });\n this.registerClickCloser('up-dismiss', (value, closeOptions) => {\n this.dismiss(value, closeOptions);\n });\n up.migrate.registerLayerCloser?.(this);\n this._registerEventCloser(this.acceptEvent, this.accept);\n this._registerEventCloser(this.dismissEvent, this.dismiss);\n this.on('up:click', 'label[for]', (event, label) => this._onLabelClicked(event, label));\n }\n _onLabelClicked(event, label) {\n let id = label.getAttribute('for');\n let fieldSelector = up.form.fieldSelector(e.idSelector(id));\n let fieldsAnywhere = up.fragment.all(fieldSelector, { layer: 'any' });\n let fieldsInLayer = up.fragment.all(fieldSelector, { layer: this });\n if (fieldsAnywhere.length > 1 && fieldsInLayer[0] !== fieldsAnywhere[0]) {\n event.preventDefault();\n const field = fieldsInLayer[0];\n field.focus();\n if (field.matches('input[type=checkbox], input[type=radio]')) {\n field.click();\n }\n }\n }\n _onOutsideClicked(event, halt) {\n up.log.putsEvent(event);\n if (halt)\n up.event.halt(event);\n up.error.muteUncriticalSync(() => this.dismiss(':outside', { origin: event.target }));\n }\n onEscapePressed(event) {\n if (this.isFront()) {\n let field = up.form.focusedField();\n if (field) {\n field.blur();\n }\n else if (this._supportsDismissMethod('key')) {\n up.event.halt(event, { log: true });\n up.error.muteUncriticalSync(() => this.dismiss(':key'));\n }\n }\n }\n registerClickCloser(attribute, closeFn) {\n let selector = `[${attribute}]`;\n this.on('up:click', selector, function (event) {\n up.event.halt(event, { log: true });\n const origin = event.target.closest(selector);\n const value = e.jsonAttr(origin, attribute);\n const closeOptions = { origin };\n const parser = new up.OptionsParser(origin, closeOptions);\n parser.booleanOrString('animation');\n parser.string('easing');\n parser.number('duration');\n parser.string('confirm');\n up.error.muteUncriticalSync(() => closeFn(value, closeOptions));\n });\n }\n _registerEventCloser(eventTypes, closeFn) {\n if (!eventTypes) {\n return;\n }\n return this.on(eventTypes, event => {\n event.preventDefault();\n up.error.muteUncriticalSync(() => closeFn.call(this, event, { response: event.response }));\n });\n }\n tryAcceptForLocation(options) {\n this._tryCloseForLocation(this.acceptLocation, this.accept, options);\n }\n tryDismissForLocation(options) {\n this._tryCloseForLocation(this.dismissLocation, this.dismiss, options);\n }\n _tryCloseForLocation(urlPattern, closeFn, options) {\n let location, resolution;\n if (urlPattern && (location = this.location) && (resolution = urlPattern.recognize(location))) {\n const closeValue = { ...resolution, location };\n up.error.muteUncriticalSync(() => closeFn.call(this, closeValue, options));\n }\n }\n teardownHandlers() {\n super.teardownHandlers();\n this.unbindParentClicked?.();\n this.unbindEscapePressed?.();\n this.overlayFocus.teardown();\n }\n destroyElements(options) {\n const animation = () => this.startCloseAnimation(options);\n const onFinished = () => {\n this.onElementsRemoved();\n options.onFinished?.();\n };\n const destroyOptions = { ...options, animation, onFinished, log: false };\n up.destroy(this.element, destroyOptions);\n }\n onElementsRemoved() {\n }\n _startAnimation(options = {}) {\n const boxDone = up.animate(this.getBoxElement(), options.boxAnimation, options);\n let backdropDone;\n if (this.backdrop && !up.motion.isNone(options.boxAnimation)) {\n backdropDone = up.animate(this.backdropElement, options.backdropAnimation, options);\n }\n return Promise.all([boxDone, backdropDone]);\n }\n async startOpenAnimation(options = {}) {\n await this._startAnimation({\n boxAnimation: options.animation ?? this.evalOption(this.openAnimation),\n backdropAnimation: 'fade-in',\n easing: options.easing || this.openEasing,\n duration: options.duration || this.openDuration\n });\n this.wasEverVisible = true;\n }\n startCloseAnimation(options = {}) {\n return this._startAnimation({\n boxAnimation: this.wasEverVisible && (options.animation ?? this.evalOption(this.closeAnimation)),\n backdropAnimation: this.wasEverVisible && 'fade-out',\n easing: options.easing || this.closeEasing,\n duration: options.duration || this.closeDuration\n });\n }\n accept(value = null, options = {}) {\n return this._executeCloseChange('accept', value, options);\n }\n dismiss(value = null, options = {}) {\n return this._executeCloseChange('dismiss', value, options);\n }\n _supportsDismissMethod(method) {\n return u.contains(this.dismissable, method);\n }\n _executeCloseChange(verb, value, options) {\n options = { ...options, verb, value, layer: this };\n return new up.Change.CloseLayer(options).execute();\n }\n getFirstSwappableElement() {\n return this.getContentElement().children[0];\n }\n toString() {\n return `${this.mode} overlay`;\n }\n};\n\n\n/***/ }),\n/* 51 */\n/***/ (() => {\n\nup.Layer.OverlayWithTether = class OverlayWithTether extends up.Layer.Overlay {\n createElements() {\n if (!this.origin) {\n up.fail('Missing { origin } option');\n }\n this._tether = new up.Tether({\n anchor: this.origin,\n align: this.align,\n position: this.position\n });\n this.createElement(this._tether.parent);\n this.createContentElement(this.element);\n }\n onContentSet() {\n this._tether.start(this.element);\n }\n onElementsRemoved() {\n this._tether.stop();\n }\n sync() {\n if (this.isOpen()) {\n if (this.isDetached() || this._tether.isDetached()) {\n this.dismiss(':detached', {\n animation: false,\n preventable: false\n });\n }\n else {\n this._tether.sync();\n }\n }\n }\n};\n\n\n/***/ }),\n/* 52 */\n/***/ (() => {\n\nup.Layer.OverlayWithViewport = class OverlayWithViewport extends up.Layer.Overlay {\n static getParentElement() {\n return document.body;\n }\n createElements() {\n up.viewport.bodyShifter.raiseStack();\n this.createElement(this.constructor.getParentElement());\n if (this.backdrop) {\n this.createBackdropElement(this.element);\n }\n this.createViewportElement(this.element);\n this.createBoxElement(this.viewportElement);\n this.createContentElement(this.boxElement);\n }\n onElementsRemoved() {\n up.viewport.bodyShifter.lowerStack();\n }\n sync() {\n if (this.isDetached() && this.isOpen()) {\n this.constructor.getParentElement().appendChild(this.element);\n }\n }\n};\n\n\n/***/ }),\n/* 53 */\n/***/ (() => {\n\nvar _a;\nconst e = up.element;\nup.Layer.Root = (_a = class Root extends up.Layer {\n get element() {\n return e.root;\n }\n constructor(options) {\n super(options);\n this.setupHandlers();\n }\n getFirstSwappableElement() {\n return document.body;\n }\n static selector() {\n return 'html';\n }\n setupHandlers() {\n if (!this.element.upHandlersApplied) {\n this.element.upHandlersApplied = true;\n super.setupHandlers();\n }\n }\n sync() {\n this.setupHandlers();\n }\n accept() {\n this._cannotCloseRoot();\n }\n dismiss() {\n this._cannotCloseRoot();\n }\n _cannotCloseRoot() {\n up.fail('Cannot close the root layer');\n }\n toString() {\n return \"root layer\";\n }\n },\n _a.mode = 'root',\n _a);\n\n\n/***/ }),\n/* 54 */\n/***/ (() => {\n\nvar _a;\nup.Layer.Modal = (_a = class Modal extends up.Layer.OverlayWithViewport {\n },\n _a.mode = 'modal',\n _a);\n\n\n/***/ }),\n/* 55 */\n/***/ (() => {\n\nvar _a;\nup.Layer.Popup = (_a = class Popup extends up.Layer.OverlayWithTether {\n },\n _a.mode = 'popup',\n _a);\n\n\n/***/ }),\n/* 56 */\n/***/ (() => {\n\nvar _a;\nup.Layer.Drawer = (_a = class Drawer extends up.Layer.OverlayWithViewport {\n },\n _a.mode = 'drawer',\n _a);\n\n\n/***/ }),\n/* 57 */\n/***/ (() => {\n\nvar _a;\nup.Layer.Cover = (_a = class Cover extends up.Layer.OverlayWithViewport {\n },\n _a.mode = 'cover',\n _a);\n\n\n/***/ }),\n/* 58 */\n/***/ (() => {\n\nvar _a;\nconst u = up.util;\nconst e = up.element;\nup.LayerLookup = (_a = class LayerLookup {\n constructor(stack, options) {\n this._stack = stack;\n if (options.normalizeLayerOptions !== false) {\n up.layer.normalizeOptions(options);\n }\n this._options = options;\n this._values = u.parseTokens(options.layer);\n }\n all() {\n let results = u.flatMap(this._values, value => this._resolveValue(value));\n results = u.compact(results);\n results = u.uniq(results);\n return results;\n }\n static all(stack, ...args) {\n const options = u.parseArgIntoOptions(args, 'layer');\n const { layer } = options;\n if (layer instanceof up.Layer) {\n return [layer];\n }\n return new this(stack, options).all();\n }\n _forElement(element) {\n element = e.get(element);\n return u.find(this._stack.reversed(), layer => layer.contains(element));\n }\n _forIndex(value) {\n return this._stack.at(value);\n }\n _resolveValue(value) {\n if (value instanceof up.Layer) {\n return value;\n }\n if (u.isNumber(value)) {\n return this._forIndex(value);\n }\n if (/^\\d+$/.test(value)) {\n return this._forIndex(Number(value));\n }\n if (u.isElementish(value)) {\n return this._forElement(value);\n }\n switch (value) {\n case 'any':\n return [this._getBaseLayer(), ...this._stack.reversed()];\n case 'current':\n return this._getBaseLayer();\n case 'closest':\n return this._stack.selfAndAncestorsOf(this._getBaseLayer());\n case 'parent':\n return this._getBaseLayer().parent;\n case 'ancestor':\n case 'ancestors':\n return this._getBaseLayer().ancestors;\n case 'child':\n return this._getBaseLayer().child;\n case 'descendant':\n case 'descendants':\n return this._getBaseLayer().descendants;\n case 'subtree':\n return this._getBaseLayer().subtree;\n case 'new':\n return 'new';\n case 'root':\n return this._stack.root;\n case 'overlay':\n case 'overlays':\n return u.reverse(this._stack.overlays);\n case 'front':\n return this._stack.front;\n case 'origin':\n return this._getOriginLayer();\n default:\n return up.fail(\"Unknown { layer } option: %o\", value);\n }\n }\n _getOriginLayer() {\n let { origin, originLayer } = this._options;\n if (originLayer) {\n return originLayer;\n }\n if (origin) {\n return this._forElement(origin);\n }\n }\n _getBaseLayer() {\n let { baseLayer } = this._options;\n if (u.isString(baseLayer)) {\n const recursiveOptions = { ...this._options, baseLayer: this._stack.current, normalizeLayerOptions: false, layer: baseLayer };\n return this.constructor.all(this._stack, recursiveOptions)[0];\n }\n else {\n return baseLayer || this._getOriginLayer() || this._stack.current;\n }\n }\n },\n (() => {\n u.memoizeMethod(_a.prototype, {\n _getBaseLayer: true,\n _getOriginLayer: true,\n });\n })(),\n _a);\n\n\n/***/ }),\n/* 59 */\n/***/ (() => {\n\nconst u = up.util;\nup.LayerStack = class LayerStack {\n constructor() {\n this._currentOverrides = [];\n this.layers = [this._buildRoot()];\n }\n _buildRoot() {\n return up.layer.build({ mode: 'root', stack: this });\n }\n remove(layer) {\n u.remove(this.layers, layer);\n }\n peel(layer, options) {\n const descendants = u.reverse(layer.descendants);\n const dismissOptions = { ...options, preventable: false };\n for (let descendant of descendants) {\n descendant.dismiss(':peel', dismissOptions);\n }\n }\n reset() {\n this.peel(this.root, { animation: false });\n this._currentOverrides = [];\n this.root.reset();\n }\n isOpen(layer) {\n return u.contains(this.layers, layer);\n }\n isClosed(layer) {\n return !this.isOpen(layer);\n }\n parentOf(layer) {\n return this.layers[layer.index - 1];\n }\n childOf(layer) {\n return this.layers[layer.index + 1];\n }\n ancestorsOf(layer) {\n return u.reverse(this.layers.slice(0, layer.index));\n }\n selfAndAncestorsOf(layer) {\n return [layer, ...layer.ancestors];\n }\n descendantsOf(layer) {\n return this.layers.slice(layer.index + 1);\n }\n isRoot(layer) {\n return this.root === layer;\n }\n isOverlay(layer) {\n return this.root !== layer;\n }\n isCurrent(layer) {\n return this.current === layer;\n }\n isFront(layer) {\n return this.front === layer;\n }\n get(...args) {\n return this.getAll(...args)[0];\n }\n getAll(...args) {\n return up.LayerLookup.all(this, ...args);\n }\n sync() {\n for (let layer of this.layers) {\n layer.sync();\n }\n }\n asCurrent(layer, fn) {\n try {\n this._currentOverrides.push(layer);\n return fn();\n }\n finally {\n this._currentOverrides.pop();\n }\n }\n reversed() {\n return u.reverse(this.layers);\n }\n dismissOverlays(value = null, options = {}) {\n options.dismissable = false;\n for (let overlay of u.reverse(this.overlays)) {\n overlay.dismiss(value, options);\n }\n }\n at(index) {\n return this.layers[index];\n }\n indexOf(layer) {\n return this.layers.indexOf(layer);\n }\n get count() {\n return this.layers.length;\n }\n get root() {\n return this.layers[0];\n }\n get overlays() {\n return this.root.descendants;\n }\n get current() {\n return u.last(this._currentOverrides) || this.front;\n }\n get front() {\n return u.last(this.layers);\n }\n};\n\n\n/***/ }),\n/* 60 */\n/***/ (() => {\n\nconst u = up.util;\nup.LinkFeedbackURLs = class LinkFeedbackURLs {\n constructor(link) {\n this._isSafe = up.link.isSafe(link);\n if (this._isSafe) {\n const href = link.getAttribute('href');\n if (href && (href !== '#')) {\n this._href = u.matchableURL(href);\n }\n const upHREF = link.getAttribute('up-href');\n if (upHREF) {\n this._upHREF = u.matchableURL(upHREF);\n }\n const alias = link.getAttribute('up-alias');\n if (alias) {\n this._aliasPattern = new up.URLPattern(alias);\n }\n }\n }\n isCurrent(normalizedLocation) {\n if (!normalizedLocation) {\n return false;\n }\n return !!(this._href === normalizedLocation ||\n this._upHREF === normalizedLocation ||\n this._aliasPattern?.test?.(normalizedLocation, false));\n }\n};\n\n\n/***/ }),\n/* 61 */\n/***/ (() => {\n\nconst u = up.util;\nconst e = up.element;\nup.LinkFollowIntent = class LinkFollowIntent {\n constructor(link, callback) {\n this._link = link;\n this._callback = callback;\n this._on('mouseenter mousedown touchstart', (event) => this._scheduleCallback(event));\n this._on('mouseleave', () => this._unscheduleCallback());\n up.fragment.onAborted(this._link, () => this._unscheduleCallback());\n }\n _on(eventType, callback) {\n up.on(this._link, eventType, { passive: true }, callback);\n }\n _scheduleCallback(event) {\n if (!up.link.shouldFollowEvent(event, this._link))\n return;\n this._unscheduleCallback();\n const applyDelay = (event.type === 'mouseenter');\n if (applyDelay) {\n let delay = this._parseDelay();\n this._timer = u.timer(delay, () => this._runCallback(event));\n }\n else {\n this._runCallback(event);\n }\n }\n _unscheduleCallback() {\n clearTimeout(this._timer);\n up.network.abort((request) => (request.origin === this._link) && request.background);\n }\n _parseDelay() {\n return e.numberAttr(this._link, 'up-preload-delay') ?? up.link.config.preloadDelay;\n }\n _runCallback(event) {\n up.log.putsEvent(event);\n up.error.muteUncriticalRejection(this._callback());\n }\n};\n\n\n/***/ }),\n/* 62 */\n/***/ (() => {\n\nconst u = up.util;\nconst e = up.element;\nup.MotionController = class MotionController {\n constructor(name) {\n this._activeClass = `up-${name}`;\n this._selector = `.${this._activeClass}`;\n this.finishEvent = `up:${name}:finish`;\n this.finishCount = 0;\n this._clusterCount = 0;\n }\n startFunction(cluster, startMotion, memory = {}) {\n cluster = e.list(cluster);\n const mutedAnimator = () => up.error.muteUncriticalRejection(startMotion());\n memory.trackMotion = memory.trackMotion ?? up.motion.isEnabled();\n if (memory.trackMotion === false) {\n return mutedAnimator();\n }\n else {\n memory.trackMotion = false;\n this.finish(cluster);\n this._markCluster(cluster);\n let promise = this._whileForwardingFinishEvent(cluster, mutedAnimator);\n promise = promise.then(() => this._unmarkCluster(cluster));\n return promise;\n }\n }\n finish(elements) {\n this.finishCount++;\n if ((this._clusterCount === 0) || !up.motion.isEnabled()) {\n return;\n }\n elements = this._expandFinishRequest(elements);\n for (let element of elements) {\n this._finishOneElement(element);\n }\n return up.migrate.formerlyAsync?.('up.motion.finish()');\n }\n _expandFinishRequest(elements) {\n if (elements) {\n return u.flatMap(elements, el => e.list(el.closest(this._selector), el.querySelectorAll(this._selector)));\n }\n else {\n return document.querySelectorAll(this._selector);\n }\n }\n isActive(element) {\n return element.classList.contains(this._activeClass);\n }\n _finishOneElement(element) {\n this._emitFinishEvent(element);\n }\n _emitFinishEvent(element, eventAttrs = {}) {\n eventAttrs = { target: element, log: false, ...eventAttrs };\n return up.emit(this.finishEvent, eventAttrs);\n }\n _markCluster(cluster) {\n this._clusterCount++;\n this._toggleActive(cluster, true);\n }\n _unmarkCluster(cluster) {\n this._clusterCount--;\n this._toggleActive(cluster, false);\n }\n _toggleActive(cluster, isActive) {\n for (let element of cluster) {\n element.classList.toggle(this._activeClass, isActive);\n }\n }\n _whileForwardingFinishEvent(cluster, fn) {\n if (cluster.length < 2) {\n return fn();\n }\n const doForward = (event) => {\n if (!event.forwarded) {\n for (let element of cluster) {\n if (element !== event.target && this.isActive(element)) {\n this._emitFinishEvent(element, { forwarded: true });\n }\n }\n }\n };\n const unbindFinish = up.on(cluster, this.finishEvent, doForward);\n return fn().then(unbindFinish);\n }\n async reset() {\n await this.finish();\n this.finishCount = 0;\n this._clusterCount = 0;\n }\n};\n\n\n/***/ }),\n/* 63 */\n/***/ (() => {\n\nconst u = up.util;\nconst e = up.element;\nup.NonceableCallback = class NonceableCallback {\n constructor(script, nonce) {\n this.script = script;\n this.nonce = nonce;\n }\n static fromString(string) {\n let match = string.match(/^(nonce-([^\\s]+)\\s)?(.*)$/);\n return new this(match[3], match[2]);\n }\n toFunction(...argNames) {\n if (this.nonce) {\n let callbackThis = this;\n return function (...args) {\n return callbackThis._runAsNoncedFunction(this, argNames, args);\n };\n }\n else {\n return new Function(...argNames, this.script);\n }\n }\n toString() {\n return `nonce-${this.nonce} ${this.script}`;\n }\n _runAsNoncedFunction(thisArg, argNames, args) {\n let wrappedScript = `\n try {\n up.noncedEval.value = (function(${argNames.join()}) {\n ${this.script}\n }).apply(up.noncedEval.thisArg, up.noncedEval.args)\n } catch (error) {\n up.noncedEval.error = error\n }\n `;\n let script;\n try {\n up.noncedEval = { args, thisArg: thisArg };\n script = up.element.affix(document.body, 'script', { nonce: this.nonce, text: wrappedScript });\n if (up.noncedEval.error) {\n throw up.noncedEval.error;\n }\n else {\n return up.noncedEval.value;\n }\n }\n finally {\n up.noncedEval = undefined;\n if (script) {\n script.remove();\n }\n }\n }\n _allowedBy(allowedNonces) {\n return this.nonce && u.contains(allowedNonces, this.nonce);\n }\n static adoptNonces(element, allowedNonces) {\n if (!allowedNonces?.length) {\n return;\n }\n const getPageNonce = u.memoize(up.protocol.cspNonce);\n u.each(up.script.config.nonceableAttributes, (attribute) => {\n let matches = e.subtree(element, `[${attribute}^=\"nonce-\"]`);\n u.each(matches, (match) => {\n let attributeValue = match.getAttribute(attribute);\n let callback = this.fromString(attributeValue);\n let warn = (message, ...args) => up.log.warn('up.render()', `Cannot use callback [${attribute}=\"${attributeValue}\"]: ${message}`, ...args);\n if (!callback._allowedBy(allowedNonces)) {\n return warn(\"Callback's CSP nonce (%o) does not match response header (%o)\", callback.nonce, allowedNonces);\n }\n let pageNonce = getPageNonce();\n if (!pageNonce) {\n return warn(\"Current page's CSP nonce is unknown\");\n }\n callback.nonce = pageNonce;\n match.setAttribute(attribute, callback.toString());\n });\n });\n }\n};\n\n\n/***/ }),\n/* 64 */\n/***/ (() => {\n\nconst e = up.element;\nconst u = up.util;\nup.OverlayFocus = class OverlayFocus {\n constructor(layer) {\n this._layer = layer;\n this._focusElement = this._layer.getFocusElement();\n }\n moveToFront() {\n if (this._enabled) {\n return;\n }\n this._enabled = true;\n this._untrapFocus = up.on('focusin', event => this._onFocus(event));\n this._unsetAttrs = e.setTemporaryAttrs(this._focusElement, {\n 'tabindex': '0',\n 'role': 'dialog',\n 'aria-modal': 'true'\n });\n this._focusTrapBefore = e.affix(this._focusElement, 'beforebegin', 'up-focus-trap[tabindex=0]');\n this._focusTrapAfter = e.affix(this._focusElement, 'afterend', 'up-focus-trap[tabindex=0]');\n }\n moveToBack() {\n this.teardown();\n }\n teardown() {\n if (!this._enabled) {\n return;\n }\n this._enabled = false;\n this._untrapFocus();\n this._unsetAttrs();\n this._focusTrapBefore.remove();\n this._focusTrapAfter.remove();\n }\n _onFocus(event) {\n const { target } = event;\n if (this._processingFocusEvent || up.layer.isWithinForeignOverlay(target)) {\n return;\n }\n this._processingFocusEvent = true;\n if (target === this._focusTrapBefore) {\n this._focusEnd();\n }\n else if ((target === this._focusTrapAfter) || !this._layer.contains(target)) {\n this._focusStart();\n }\n this._processingFocusEvent = false;\n }\n _focusStart(focusOptions) {\n up.focus(this._focusElement, focusOptions);\n }\n _focusEnd() {\n this._focusLastDescendant(this._layer.getBoxElement()) || this._focusStart();\n }\n _focusLastDescendant(element) {\n for (let child of u.reverse(element.children)) {\n if (up.viewport.tryFocus(child) || this._focusLastDescendant(child)) {\n return true;\n }\n }\n }\n};\n\n\n/***/ }),\n/* 65 */\n/***/ (() => {\n\nconst u = up.util;\nconst e = up.element;\nup.Params = class Params {\n constructor(raw) {\n this.clear();\n this.addAll(raw);\n }\n clear() {\n this.entries = [];\n }\n [u.copy.key]() {\n return new up.Params(this);\n }\n toObject() {\n const obj = {};\n for (let entry of this.entries) {\n const { name, value } = entry;\n if (!u.isBasicObjectProperty(name)) {\n if (this._isArrayKey(name)) {\n obj[name] ||= [];\n obj[name].push(value);\n }\n else {\n obj[name] = value;\n }\n }\n }\n return obj;\n }\n toArray() {\n return this.entries;\n }\n toFormData() {\n const formData = new FormData();\n for (let entry of this.entries) {\n formData.append(entry.name, entry.value);\n }\n if (!formData.entries) {\n formData.originalArray = this.entries;\n }\n return formData;\n }\n toQuery() {\n let parts = u.map(this.entries, this._arrayEntryToQuery.bind(this));\n parts = u.compact(parts);\n return parts.join('&');\n }\n _arrayEntryToQuery(entry) {\n const { value } = entry;\n if (this._isBinaryValue(value)) {\n return;\n }\n let query = encodeURIComponent(entry.name);\n if (u.isGiven(value)) {\n query += \"=\";\n query += encodeURIComponent(value);\n }\n return query;\n }\n _isBinaryValue(value) {\n return value instanceof Blob;\n }\n hasBinaryValues() {\n const values = u.map(this.entries, 'value');\n return u.some(values, this._isBinaryValue);\n }\n toURL(base) {\n let parts = [base, this.toQuery()];\n parts = u.filter(parts, u.isPresent);\n const separator = u.contains(base, '?') ? '&' : '?';\n return parts.join(separator);\n }\n add(name, value) {\n this.entries.push({ name, value });\n }\n addAll(raw) {\n if (u.isMissing(raw)) {\n }\n else if (raw instanceof this.constructor) {\n this.entries.push(...raw.entries);\n }\n else if (u.isArray(raw)) {\n this.entries.push(...raw);\n }\n else if (u.isString(raw)) {\n this._addAllFromQuery(raw);\n }\n else if (u.isFormData(raw)) {\n this._addAllFromFormData(raw);\n }\n else if (u.isObject(raw)) {\n this._addAllFromObject(raw);\n }\n else {\n up.fail(\"Unsupport params type: %o\", raw);\n }\n }\n _addAllFromObject(object) {\n for (let key in object) {\n const value = object[key];\n const valueElements = u.isArray(value) ? value : [value];\n for (let valueElement of valueElements) {\n this.add(key, valueElement);\n }\n }\n }\n _addAllFromQuery(query) {\n for (let part of query.split('&')) {\n if (part) {\n let [name, value] = part.split('=');\n name = decodeURIComponent(name);\n if (u.isGiven(value)) {\n value = decodeURIComponent(value);\n }\n else {\n value = null;\n }\n this.add(name, value);\n }\n }\n }\n _addAllFromFormData(formData) {\n for (let value of formData.entries()) {\n this.add(...value);\n }\n }\n set(name, value) {\n this.delete(name);\n this.add(name, value);\n }\n delete(name) {\n this.entries = u.reject(this.entries, this._matchEntryFn(name));\n }\n _matchEntryFn(name) {\n return entry => entry.name === name;\n }\n get(name) {\n if (this._isArrayKey(name)) {\n return this.getAll(name);\n }\n else {\n return this.getFirst(name);\n }\n }\n getFirst(name) {\n const entry = u.find(this.entries, this._matchEntryFn(name));\n return entry?.value;\n }\n getAll(name) {\n if (this._isArrayKey(name)) {\n return this.getAll(name);\n }\n else {\n const entries = u.map(this.entries, this._matchEntryFn(name));\n return u.map(entries, 'value');\n }\n }\n _isArrayKey(key) {\n return key.endsWith('[]');\n }\n [u.isBlank.key]() {\n return this.entries.length === 0;\n }\n static fromForm(form) {\n return this.fromContainer(form);\n }\n static fromContainer(container) {\n let fields = up.form.fields(container);\n return this.fromFields(fields);\n }\n static fromFields(fields) {\n const params = new (this)();\n for (let field of u.wrapList(fields)) {\n params.addField(field);\n }\n return params;\n }\n addField(field) {\n field = e.get(field);\n let name = field.name;\n if (name && !field.disabled) {\n const { tagName } = field;\n const { type } = field;\n if (tagName === 'SELECT') {\n for (let option of field.querySelectorAll('option')) {\n if (option.selected) {\n this.add(name, option.value);\n }\n }\n }\n else if ((type === 'checkbox') || (type === 'radio')) {\n if (field.checked) {\n this.add(name, field.value);\n }\n }\n else if (type === 'file') {\n for (let file of field.files) {\n this.add(name, file);\n }\n }\n else {\n return this.add(name, field.value);\n }\n }\n }\n [u.isEqual.key](other) {\n return (this.constructor === other.constructor) && u.isEqual(this.entries, other.entries);\n }\n static fromURL(url) {\n const params = new (this)();\n const urlParts = u.parseURL(url);\n let query = urlParts.search;\n if (query) {\n query = query.replace(/^\\?/, '');\n params.addAll(query);\n }\n return params;\n }\n static stripURL(url) {\n return u.normalizeURL(url, { search: false });\n }\n static merge(...objects) {\n return objects.reduce(function (allParams, params) {\n allParams.addAll(params);\n return allParams;\n }, new up.Params());\n }\n};\n\n\n/***/ }),\n/* 66 */\n/***/ (() => {\n\nconst e = up.element;\nconst TRANSITION_DELAY = 300;\nup.ProgressBar = class ProgressBar {\n constructor() {\n this._step = 0;\n this._element = e.affix(document.body, 'up-progress-bar');\n this._element.style.transition = `width ${TRANSITION_DELAY}ms ease-out`;\n this._moveTo(0);\n up.element.paint(this._element);\n this._width = 31;\n this._nextStep();\n }\n _nextStep() {\n let diff;\n if (this._width < 80) {\n if (Math.random() < 0.15) {\n diff = 7 + (5 * Math.random());\n }\n else {\n diff = 1.5 + (0.5 * Math.random());\n }\n }\n else {\n diff = 0.13 * (100 - this._width) * Math.random();\n }\n this._moveTo(this._width + diff);\n this._step++;\n const nextStepDelay = TRANSITION_DELAY + (this._step * 40);\n this.timeout = setTimeout(this._nextStep.bind(this), nextStepDelay);\n }\n _moveTo(width) {\n this._width = width;\n this._element.style.width = `${width}vw`;\n }\n destroy() {\n clearTimeout(this.timeout);\n this._element.remove();\n }\n conclude() {\n clearTimeout(this.timeout);\n this._moveTo(100);\n setTimeout(this.destroy.bind(this), TRANSITION_DELAY);\n }\n};\n\n\n/***/ }),\n/* 67 */\n/***/ (() => {\n\nconst u = up.util;\nup.RenderOptions = (function () {\n const GLOBAL_DEFAULTS = {\n useHungry: true,\n useKeep: true,\n saveScroll: true,\n saveFocus: true,\n focus: 'keep',\n abort: 'target',\n failOptions: true,\n };\n const PRELOAD_OVERRIDES = {\n abort: false,\n confirm: false,\n feedback: false,\n cache: true,\n background: true,\n };\n const PREFLIGHT_KEYS = [\n 'url',\n 'method',\n 'origin',\n 'headers',\n 'params',\n 'cache',\n 'fallback',\n 'abort',\n 'abortable',\n 'confirm',\n 'feedback',\n 'origin',\n 'originLayer',\n 'baseLayer',\n 'fail',\n 'onError',\n ];\n const SHARED_KEYS = PREFLIGHT_KEYS.concat([\n 'keep',\n 'hungry',\n 'history',\n 'source',\n 'saveScroll',\n 'navigate',\n 'baseLayer',\n ]);\n const CONTENT_KEYS = [\n 'url',\n 'response',\n 'content',\n 'fragment',\n 'document',\n ];\n const LATE_KEYS = [\n 'history',\n 'focus',\n 'scroll',\n ];\n function navigateDefaults(options) {\n if (options.navigate) {\n return up.fragment.config.navigateOptions;\n }\n }\n function normalizeURL({ url }) {\n if (url) {\n return { url: u.normalizeURL(url) };\n }\n }\n function preloadOverrides(options) {\n if (options.preload) {\n return PRELOAD_OVERRIDES;\n }\n }\n function preprocess(options) {\n up.migrate.preprocessRenderOptions?.(options);\n const defaults = u.merge(GLOBAL_DEFAULTS, navigateDefaults(options));\n return u.merge(u.omit(defaults, LATE_KEYS), { defaults }, { inputDevice: up.event.inputDevice }, options, normalizeURL(options), rememberOriginLayer(options), preloadOverrides(options));\n }\n function rememberOriginLayer({ origin, originLayer }) {\n if (origin && !originLayer) {\n return {\n originLayer: up.layer.get(origin),\n };\n }\n }\n function finalize(preprocessedOptions, lateDefaults) {\n return u.merge(preprocessedOptions.defaults, lateDefaults, preprocessedOptions);\n }\n function assertContentGiven(options) {\n if (!u.some(CONTENT_KEYS, contentKey => u.isGiven(options[contentKey]))) {\n if (options.defaultToEmptyContent) {\n options.content = '';\n }\n else {\n up.fail('up.render() needs either { ' + CONTENT_KEYS.join(', ') + ' } option');\n }\n }\n }\n function failOverrides(options) {\n const overrides = {};\n for (let key in options) {\n const value = options[key];\n let unprefixed = up.fragment.successKey(key);\n if (unprefixed) {\n overrides[unprefixed] = value;\n }\n }\n return overrides;\n }\n function deriveFailOptions(preprocessedOptions) {\n let overrides = failOverrides(preprocessedOptions);\n let layers = rememberOriginLayer(overrides);\n if (preprocessedOptions.failOptions) {\n return {\n ...preprocessedOptions.defaults,\n ...u.pick(preprocessedOptions, SHARED_KEYS),\n ...overrides,\n ...layers,\n ...{ failPrefixForced: true }\n };\n }\n else {\n return {\n ...preprocessedOptions,\n ...overrides,\n ...layers,\n };\n }\n }\n return {\n preprocess,\n finalize,\n assertContentGiven,\n deriveFailOptions,\n lookupLayers: rememberOriginLayer,\n };\n})();\n\n\n/***/ }),\n/* 68 */\n/***/ (() => {\n\nup.RenderResult = class RenderResult extends up.Record {\n keys() {\n return [\n 'fragments',\n 'layer',\n 'target',\n 'options',\n 'finished',\n ];\n }\n defaults() {\n return {\n fragments: [],\n };\n }\n get none() {\n return !this.fragments.length;\n }\n get fragment() {\n return this.fragments[0];\n }\n static both(main, extension, mergeFinished = true) {\n if (!extension)\n return main;\n return new this({\n target: main.target,\n layer: main.layer,\n options: main.options,\n fragments: main.fragments.concat(extension.fragments),\n finished: (mergeFinished && this.mergeFinished(main, extension))\n });\n }\n static async mergeFinished(main, extension) {\n return this.both(await main.finished, await extension.finished, false);\n }\n static buildNone() {\n return new this({\n target: ':none',\n finished: Promise.resolve(),\n });\n }\n};\n\n\n/***/ }),\n/* 69 */\n/***/ (() => {\n\nvar _a;\nconst u = up.util;\nup.Request = (_a = class Request extends up.Record {\n keys() {\n return [\n 'method',\n 'url',\n 'hash',\n 'params',\n 'target',\n 'failTarget',\n 'headers',\n 'timeout',\n 'background',\n 'cache',\n 'expireCache',\n 'evictCache',\n 'layer',\n 'mode',\n 'context',\n 'failLayer',\n 'failMode',\n 'failContext',\n 'origin',\n 'fragments',\n 'builtAt',\n 'wrapMethod',\n 'contentType',\n 'payload',\n 'onLoading',\n 'fail',\n 'abortable',\n 'badResponseTime',\n ];\n }\n defaults() {\n return {\n state: 'new',\n abortable: true,\n headers: {},\n timeout: up.network.config.timeout,\n builtAt: new Date(),\n };\n }\n constructor(options) {\n super(options);\n this.params = new up.Params(this.params);\n if (this.wrapMethod == null) {\n this.wrapMethod = up.network.config.wrapMethod;\n }\n this._normalize();\n if ((this.target || this.layer || this.origin) && !options.basic) {\n const layerLookupOptions = { origin: this.origin };\n this.layer = up.layer.get(this.layer, layerLookupOptions);\n this.failLayer = up.layer.get(this.failLayer, layerLookupOptions);\n this.context ||= this.layer.context || {};\n this.failContext ||= this.failLayer?.context || {};\n this.mode ||= this.layer.mode;\n this.failMode ||= this.failLayer?.mode;\n }\n this.deferred = u.newDeferred();\n this.badResponseTime ??= u.evalOption(up.network.config.badResponseTime, this);\n this._setAutoHeaders();\n }\n get xhr() {\n return this._xhr ??= new XMLHttpRequest();\n }\n get fragments() {\n if (this._fragments) {\n return this._fragments;\n }\n else {\n let steps = up.fragment.parseTargetSteps(this.target);\n let selectors = u.map(steps, 'selector');\n let lookupOpts = { origin: this.origin, layer: this.layer };\n return u.compact(u.map(selectors, (selector) => up.fragment.get(selector, lookupOpts)));\n }\n }\n set fragments(value) {\n this._fragments = value;\n }\n get fragment() {\n return this.fragments?.[0];\n }\n _normalize() {\n this.method = u.normalizeMethod(this.method);\n this._extractHashFromURL();\n this._transferParamsToURL();\n this.url = u.normalizeURL(this.url);\n }\n _evictExpensiveAttrs() {\n u.task(() => {\n this.layer = undefined;\n this.failLayer = undefined;\n this.origin = undefined;\n this.fragments = undefined;\n });\n }\n _extractHashFromURL() {\n let match = this.url?.match(/^([^#]*)(#.+)$/);\n if (match) {\n this.url = match[1];\n return this.hash = match[2];\n }\n }\n _transferParamsToURL() {\n if (!this.url || this.allowsPayload() || u.isBlank(this.params)) {\n return;\n }\n this.url = this.params.toURL(this.url);\n this.params.clear();\n }\n isSafe() {\n return up.network.isSafeMethod(this.method);\n }\n allowsPayload() {\n return u.methodAllowsPayload(this.method);\n }\n will302RedirectWithGET() {\n return this.isSafe() || (this.method === 'POST');\n }\n willCache() {\n return u.evalAutoOption(this.cache, up.network.config.autoCache, this);\n }\n runQueuedCallbacks() {\n u.always(this, () => this._evictExpensiveAttrs());\n }\n load() {\n if (this.state !== 'new')\n return;\n if (this._emitLoad()) {\n this.state = 'loading';\n this._normalize();\n this.onLoading?.();\n this.expired = false;\n new up.Request.XHRRenderer(this).buildAndSend({\n onload: () => this._onXHRLoad(),\n onerror: () => this._onXHRError(),\n ontimeout: () => this._onXHRTimeout(),\n onabort: () => this._onXHRAbort()\n });\n return true;\n }\n else {\n this.abort({ reason: 'Prevented by event listener' });\n }\n }\n _emitLoad() {\n let event = this.emit('up:request:load', { log: ['Loading %s', this.description] });\n return !event.defaultPrevented;\n }\n loadPage() {\n up.network.abort();\n new up.Request.FormRenderer(this).buildAndSubmit();\n }\n _onXHRLoad() {\n const response = this._extractResponseFromXHR();\n const log = 'Loaded ' + response.description;\n this.emit('up:request:loaded', { request: response.request, response, log });\n this.respondWith(response);\n }\n _onXHRError() {\n this._setOfflineState('Network error');\n }\n _onXHRTimeout() {\n this._setOfflineState('Timeout');\n }\n _onXHRAbort() {\n this._setAbortedState();\n }\n abort({ reason } = {}) {\n if (this._setAbortedState(reason) && this._xhr) {\n this._xhr.abort();\n }\n }\n _setAbortedState(reason) {\n if (this._isSettled())\n return;\n let message = 'Aborted request to ' + this.description + (reason ? ': ' + reason : '');\n this.state = 'aborted';\n this.deferred.reject(new up.Aborted(message));\n this.emit('up:request:aborted', { log: message });\n return true;\n }\n _setOfflineState(reason) {\n if (this._isSettled())\n return;\n let message = 'Cannot load request to ' + this.description + (reason ? ': ' + reason : '');\n this.state = 'offline';\n this.emit('up:request:offline', { log: message });\n this.deferred.reject(new up.Offline(message));\n }\n respondWith(response) {\n this.response = response;\n if (this._isSettled())\n return;\n this.state = 'loaded';\n if (response.ok) {\n this.deferred.resolve(response);\n }\n else {\n this.deferred.reject(response);\n }\n }\n _isSettled() {\n return (this.state !== 'new') && (this.state !== 'loading') && (this.state !== 'tracking');\n }\n csrfHeader() {\n return up.protocol.csrfHeader();\n }\n csrfParam() {\n return up.protocol.csrfParam();\n }\n csrfToken() {\n if (!this.isSafe() && !this.isCrossOrigin()) {\n return up.protocol.csrfToken();\n }\n }\n isCrossOrigin() {\n return u.isCrossOrigin(this.url);\n }\n _extractResponseFromXHR() {\n const responseAttrs = {\n method: this.method,\n url: this.url,\n request: this,\n xhr: this.xhr,\n text: this.xhr.responseText,\n status: this.xhr.status,\n title: up.protocol.titleFromXHR(this.xhr),\n target: up.protocol.targetFromXHR(this.xhr),\n acceptLayer: up.protocol.acceptLayerFromXHR(this.xhr),\n dismissLayer: up.protocol.dismissLayerFromXHR(this.xhr),\n eventPlans: up.protocol.eventPlansFromXHR(this.xhr),\n context: up.protocol.contextFromXHR(this.xhr),\n expireCache: up.protocol.expireCacheFromXHR(this.xhr),\n evictCache: up.protocol.evictCacheFromXHR(this.xhr),\n fail: this.fail,\n };\n let methodFromResponse = up.protocol.methodFromXHR(this.xhr);\n let urlFromResponse = up.protocol.locationFromXHR(this.xhr);\n if (urlFromResponse) {\n if (!u.matchURLs(this.url, urlFromResponse)) {\n methodFromResponse ||= 'GET';\n }\n responseAttrs.url = urlFromResponse;\n }\n if (methodFromResponse) {\n responseAttrs.method = methodFromResponse;\n }\n return new up.Response(responseAttrs);\n }\n _buildEventEmitter(args) {\n return up.EventEmitter.fromEmitArgs(args, {\n layer: this.layer,\n request: this,\n origin: this.origin\n });\n }\n emit(...args) {\n return this._buildEventEmitter(args).emit();\n }\n assertEmitted(...args) {\n this._buildEventEmitter(args).assertEmitted();\n }\n get description() {\n return this.method + ' ' + this.url;\n }\n isPartOfSubtree(subtreeElements) {\n subtreeElements = u.wrapList(subtreeElements);\n return u.some(this.fragments, function (fragment) {\n return u.some(subtreeElements, (subtreeElement) => subtreeElement.contains(fragment));\n });\n }\n get age() {\n return new Date() - this.builtAt;\n }\n header(name) {\n return this.headers[name];\n }\n _setAutoHeaders() {\n for (let key of ['target', 'failTarget', 'mode', 'failMode', 'context', 'failContext']) {\n this._setPropertyHeader(key);\n }\n let csrfHeader, csrfToken;\n if ((csrfHeader = this.csrfHeader()) && (csrfToken = this.csrfToken())) {\n this._setAutoHeader(csrfHeader, csrfToken);\n }\n this._setAutoHeader(up.protocol.headerize('version'), up.version);\n }\n _setPropertyHeader(key) {\n this._setAutoHeader(up.protocol.headerize(key), this[key]);\n }\n _setAutoHeader(name, value) {\n if (u.isMissing(value)) {\n return;\n }\n if (u.isOptions(value) || u.isArray(value)) {\n value = u.safeStringifyJSON(value);\n }\n this.headers[name] = value;\n }\n mergeIfUnsent(trackingRequest) {\n if (this.state !== 'new')\n return;\n if (!this.target || !trackingRequest.target)\n return;\n let targetAtoms = up.fragment.splitTarget(this.target + ',' + trackingRequest.target);\n this.target = u.uniq(targetAtoms).join(', ');\n this._setPropertyHeader('target');\n this._fragments = u.uniq([...this.fragments, ...trackingRequest.fragments]);\n }\n static tester(condition, { except } = {}) {\n let testFn;\n if (u.isFunction(condition)) {\n testFn = condition;\n }\n else if (condition instanceof this) {\n testFn = (request) => condition === request;\n }\n else if (u.isString(condition)) {\n let pattern = new up.URLPattern(condition);\n testFn = (request) => pattern.test(request.url);\n }\n else {\n testFn = (_request) => condition;\n }\n if (except) {\n return (request) => !up.cache.willHaveSameResponse(request, except) && testFn(request);\n }\n else {\n return testFn;\n }\n }\n },\n (() => {\n u.delegate(_a.prototype, ['then', 'catch', 'finally'], function () { return this.deferred; });\n })(),\n _a);\n\n\n/***/ }),\n/* 70 */\n/***/ (() => {\n\nconst u = up.util;\nclass Route {\n constructor() {\n this.varyHeaders = new Set();\n this.requests = [];\n }\n matchBest(newRequest) {\n let matches = this.requests.filter((cachedRequest) => this.satisfies(cachedRequest, newRequest));\n return u.last(matches);\n }\n delete(request) {\n u.remove(this.requests, request);\n }\n put(request) {\n this.requests.push(request);\n }\n updateVary(response) {\n for (let headerName of response.varyHeaderNames) {\n this.varyHeaders.add(headerName);\n }\n }\n satisfies(cachedRequest, newRequest) {\n if (cachedRequest === newRequest)\n return true;\n return u.every(this.varyHeaders, (varyHeader) => {\n let cachedValue = cachedRequest.header(varyHeader);\n let newValue = newRequest.header(varyHeader);\n if (varyHeader === 'X-Up-Target' || varyHeader === 'X-Up-Fail-Target') {\n if (!cachedValue)\n return true;\n if (!newValue)\n return false;\n let cachedTokens = u.parseTokens(cachedValue, { separator: 'comma' });\n let newTokens = u.parseTokens(newValue, { separator: 'comma' });\n return u.containsAll(cachedTokens, newTokens);\n }\n else {\n return cachedValue === newValue;\n }\n });\n }\n}\nup.Request.Cache = class Cache {\n constructor() {\n this.reset();\n }\n reset() {\n this._routes = {};\n this._requests = [];\n }\n get(request) {\n request = this._wrap(request);\n let route = this._getRoute(request);\n let cachedRequest = route.matchBest(request);\n if (cachedRequest) {\n if (this._isUsable(cachedRequest)) {\n return cachedRequest;\n }\n else {\n this._delete(request, route);\n }\n }\n }\n async put(request) {\n request = this._wrap(request);\n let route = this._getRoute(request);\n let { response } = request;\n if (response)\n route.updateVary(response);\n let superseded = route.requests.filter((oldRequest) => route.satisfies(request, oldRequest));\n for (let r of superseded) {\n this._delete(r);\n }\n request.cacheRoute = route;\n route.put(request);\n this._requests.push(request);\n this._limitSize();\n }\n alias(existingCachedRequest, newRequest) {\n existingCachedRequest = this.get(existingCachedRequest);\n if (!existingCachedRequest)\n return;\n newRequest = this._wrap(newRequest);\n this.track(existingCachedRequest, newRequest, { force: true });\n this.put(newRequest);\n return newRequest;\n }\n async track(existingRequest, newRequest, options = {}) {\n newRequest.trackedRequest = existingRequest;\n newRequest.state = 'tracking';\n let value = await u.always(existingRequest);\n if (value instanceof up.Response) {\n if (options.force || existingRequest.cacheRoute.satisfies(existingRequest, newRequest)) {\n newRequest.fromCache = true;\n value = u.variant(value, { request: newRequest });\n newRequest.respondWith(value);\n u.delegate(newRequest, ['expired', 'state'], () => existingRequest);\n }\n else {\n delete newRequest.trackedRequest;\n newRequest.state = 'new';\n options.onIncompatible?.(newRequest);\n }\n }\n else {\n newRequest.state = existingRequest.state;\n newRequest.deferred.reject(value);\n }\n }\n willHaveSameResponse(existingRequest, newRequest) {\n return existingRequest === newRequest || existingRequest === newRequest.trackedRequest;\n }\n evict(condition = true, testerOptions) {\n this._eachMatch(condition, testerOptions, (request) => this._delete(request));\n }\n expire(condition = true, testerOptions) {\n this._eachMatch(condition, testerOptions, (request) => request.expired = true);\n }\n reindex(request) {\n this._delete(request);\n this.put(request);\n }\n _delete(request) {\n u.remove(this._requests, request);\n request.cacheRoute?.delete(request);\n delete request.cacheRoute;\n }\n _getRoute(request) {\n return request.cacheRoute || (this._routes[request.description] ||= new Route());\n }\n _isUsable(request) {\n return request.age < up.network.config.cacheEvictAge;\n }\n get _size() {\n return this._requests.length;\n }\n get _capacity() {\n return up.network.config.cacheSize;\n }\n _limitSize() {\n for (let i = 0; i < (this._size - this._capacity); i++) {\n this._delete(this._requests[0]);\n }\n }\n _eachMatch(condition = true, testerOptions, fn) {\n let tester = up.Request.tester(condition, testerOptions);\n let results = u.filter(this._requests, tester);\n u.each(results, fn);\n }\n _wrap(requestOrOptions) {\n return u.wrapValue(up.Request, requestOrOptions);\n }\n};\n\n\n/***/ }),\n/* 71 */\n/***/ (() => {\n\nconst u = up.util;\nup.Request.Queue = class Queue {\n constructor() {\n this.reset();\n }\n reset() {\n this._queuedRequests = [];\n this._currentRequests = [];\n this._emittedLate = false;\n }\n get allRequests() {\n return this._currentRequests.concat(this._queuedRequests);\n }\n asap(request) {\n request.runQueuedCallbacks();\n u.always(request, responseOrError => this._onRequestSettled(request, responseOrError));\n this._scheduleSlowTimer(request);\n this._queueRequest(request);\n queueMicrotask(() => this._poke());\n }\n promoteToForeground(request) {\n if (request.background) {\n request.background = false;\n this._scheduleSlowTimer(request);\n }\n }\n _scheduleSlowTimer(request) {\n let timeUntilLate = Math.max(request.badResponseTime - request.age, 0);\n u.timer(timeUntilLate, () => this._checkLate());\n }\n _getMaxConcurrency() {\n return u.evalOption(up.network.config.concurrency);\n }\n _hasConcurrencyLeft() {\n const maxConcurrency = this._getMaxConcurrency();\n return (maxConcurrency === -1) || (this._currentRequests.length < maxConcurrency);\n }\n isBusy() {\n return this._currentRequests.length > 0 || this._queuedRequests.length > 0;\n }\n _queueRequest(request) {\n this._queuedRequests.push(request);\n }\n _pluckNextRequest() {\n let request = u.find(this._queuedRequests, request => !request.background);\n request ||= this._queuedRequests[0];\n return u.remove(this._queuedRequests, request);\n }\n _sendRequestNow(request) {\n if (request.load()) {\n this._currentRequests.push(request);\n }\n }\n _onRequestSettled(request, responseOrError) {\n u.remove(this._currentRequests, request) || u.remove(this._queuedRequests, request);\n if ((responseOrError instanceof up.Response) && responseOrError.ok) {\n up.network.registerAliasForRedirect(request, responseOrError);\n }\n this._checkLate();\n queueMicrotask(() => this._poke());\n }\n _poke() {\n let request;\n if (this._hasConcurrencyLeft() && (request = this._pluckNextRequest())) {\n return this._sendRequestNow(request);\n }\n }\n abort(...args) {\n let options = u.extractOptions(args);\n let { except, reason, logOnce } = options;\n let conditions = args[0] ?? true;\n let tester = up.Request.tester(conditions, { except });\n for (let list of [this._currentRequests, this._queuedRequests]) {\n const abortableRequests = u.filter(list, tester);\n for (let abortableRequest of abortableRequests) {\n if (logOnce) {\n up.puts(...logOnce);\n logOnce = null;\n }\n abortableRequest.abort({ reason });\n u.remove(list, abortableRequest);\n }\n }\n }\n _checkLate() {\n const currentLate = this._isLate();\n if (this._emittedLate !== currentLate) {\n this._emittedLate = currentLate;\n if (currentLate) {\n up.emit('up:network:late', { log: 'Server is slow to respond' });\n }\n else {\n up.emit('up:network:recover', { log: 'Slow requests were loaded' });\n }\n }\n }\n _isLate() {\n const allForegroundRequests = u.reject(this.allRequests, 'background');\n const timerTolerance = 1;\n return u.some(allForegroundRequests, (request) => request.age >= (request.badResponseTime - timerTolerance));\n }\n};\n\n\n/***/ }),\n/* 72 */\n/***/ (() => {\n\nconst u = up.util;\nconst e = up.element;\nconst HTML_FORM_METHODS = ['GET', 'POST'];\nup.Request.FormRenderer = class FormRenderer {\n constructor(request) {\n this._request = request;\n }\n buildAndSubmit() {\n this.params = u.copy(this._request.params);\n let action = this._request.url;\n let { method } = this._request;\n const paramsFromQuery = up.Params.fromURL(action);\n this.params.addAll(paramsFromQuery);\n action = up.Params.stripURL(action);\n if (!u.contains(HTML_FORM_METHODS, method)) {\n method = up.protocol.wrapMethod(method, this.params);\n }\n this._form = e.affix(document.body, 'form.up-request-loader', { method, action });\n let contentType = this._request.contentType;\n if (contentType) {\n this._form.setAttribute('enctype', contentType);\n }\n let csrfParam, csrfToken;\n if ((csrfParam = this._request.csrfParam()) && (csrfToken = this._request.csrfToken())) {\n this.params.add(csrfParam, csrfToken);\n }\n u.each(this.params.toArray(), this._addField.bind(this));\n up.browser.submitForm(this._form);\n }\n _addField(attrs) {\n e.affix(this._form, 'input[type=hidden]', attrs);\n }\n};\n\n\n/***/ }),\n/* 73 */\n/***/ (() => {\n\nvar _a;\nconst CONTENT_TYPE_URL_ENCODED = 'application/x-www-form-urlencoded';\nconst CONTENT_TYPE_FORM_DATA = 'multipart/form-data';\nconst u = up.util;\nup.Request.XHRRenderer = (_a = class XHRRenderer {\n constructor(request) {\n this._request = request;\n }\n buildAndSend(handlers) {\n const xhr = this._request.xhr;\n this._params = u.copy(this._request.params);\n if (this._request.timeout) {\n xhr.timeout = this._request.timeout;\n }\n xhr.open(this._getMethod(), this._request.url);\n let contentType = this._getContentType();\n if (contentType) {\n xhr.setRequestHeader('Content-Type', contentType);\n }\n for (let headerName in this._request.headers) {\n let headerValue = this._request.headers[headerName];\n xhr.setRequestHeader(headerName, headerValue);\n }\n Object.assign(xhr, handlers);\n xhr.send(this._getPayload());\n }\n _getMethod() {\n let method = this._request.method;\n if (this._request.wrapMethod && !this._request.will302RedirectWithGET()) {\n method = up.protocol.wrapMethod(method, this._params);\n }\n return method;\n }\n _getContentType() {\n this._finalizePayload();\n return this._contentType;\n }\n _getPayload() {\n this._finalizePayload();\n return this._payload;\n }\n _finalizePayload() {\n this._payload = this._request.payload;\n this._contentType = this._request.contentType;\n if (!this._payload && this._request.allowsPayload()) {\n if (!this._contentType) {\n this._contentType = this._params.hasBinaryValues() ? CONTENT_TYPE_FORM_DATA : CONTENT_TYPE_URL_ENCODED;\n }\n if (this._contentType === CONTENT_TYPE_FORM_DATA) {\n this._contentType = null;\n this._payload = this._params.toFormData();\n }\n else {\n this._payload = this._params.toQuery().replace(/%20/g, '+');\n }\n }\n }\n },\n (() => {\n u.memoizeMethod(_a.prototype, {\n _finalizePayload: true,\n _getMethod: true,\n });\n })(),\n _a);\n\n\n/***/ }),\n/* 74 */\n/***/ (() => {\n\nconst u = up.util;\nup.Response = class Response extends up.Record {\n keys() {\n return [\n 'method',\n 'url',\n 'text',\n 'status',\n 'request',\n 'xhr',\n 'target',\n 'title',\n 'acceptLayer',\n 'dismissLayer',\n 'eventPlans',\n 'context',\n 'expireCache',\n 'evictCache',\n 'headers',\n 'loadedAt',\n 'fail',\n ];\n }\n defaults() {\n return {\n headers: {},\n loadedAt: new Date()\n };\n }\n get ok() {\n return !u.evalOption(this.fail ?? up.network.config.fail, this);\n }\n get none() {\n return !this.text;\n }\n header(name) {\n return this.headers[name] || this.xhr?.getResponseHeader(name);\n }\n get varyHeaderNames() {\n let varyHeaderValue = this.header('Vary');\n return u.parseTokens(varyHeaderValue, { separator: 'comma' });\n }\n get contentType() {\n return this.header('Content-Type');\n }\n get cspNonces() {\n return up.protocol.cspNoncesFromHeader(this.header('Content-Security-Policy') || this.header('Content-Security-Policy-Report-Only'));\n }\n get lastModified() {\n let header = this.header('Last-Modified');\n if (header) {\n return new Date(header);\n }\n }\n get etag() {\n return this.header('ETag');\n }\n get json() {\n return this.parsedJSON ||= JSON.parse(this.text);\n }\n get age() {\n let now = new Date();\n return now - this.loadedAt;\n }\n get expired() {\n return this.age > up.network.config.cacheExpireAge ||\n this.request.expired;\n }\n get description() {\n return `HTTP ${this.status} response to ${this.request.description}`;\n }\n};\n\n\n/***/ }),\n/* 75 */\n/***/ (() => {\n\nvar _a;\nconst u = up.util;\nconst e = up.element;\nconst FULL_DOCUMENT_PATTERN = /^\\s*<(html|!DOCTYPE)\\b/i;\nup.ResponseDoc = (_a = class ResponseDoc {\n constructor({ document, fragment, content, target, origin, cspNonces, match }) {\n if (document) {\n this._parseDocument(document);\n }\n else if (fragment) {\n this._parseFragment(fragment);\n }\n else {\n this._parseContent(content || '', target);\n }\n this._cspNonces = cspNonces;\n if (origin) {\n let originSelector = up.fragment.tryToTarget(origin);\n if (originSelector) {\n this._rediscoveredOrigin = this.select(originSelector);\n }\n }\n this._match = match;\n }\n _parseDocument(value) {\n if (value instanceof Document) {\n this._document = value;\n this._isFullDocument = true;\n }\n else if (u.isString(value)) {\n this._document = e.createBrokenDocumentFromHTML(value);\n this._isFullDocument = FULL_DOCUMENT_PATTERN.test(value);\n this._isDocumentBroken = true;\n }\n else {\n this._document = this._buildFauxDocument(value);\n this._isFullDocument = value.matches('html');\n }\n }\n _parseFragment(value) {\n let parsed = u.isString(value) ? e.createFromHTML(value) : value;\n this._document = this._buildFauxDocument(parsed);\n }\n _parseContent(value, target) {\n if (!target)\n up.fail(\"must pass a { target } when passing { content }\");\n let simplifiedTarget = u.map(up.fragment.parseTargetSteps(target), 'selector').join();\n const matchingElement = e.createFromSelector(simplifiedTarget);\n if (u.isString(value)) {\n matchingElement.innerHTML = value;\n }\n else {\n matchingElement.appendChild(value);\n }\n this._document = this._buildFauxDocument(matchingElement);\n }\n _buildFauxDocument(node) {\n let fauxDocument = document.createElement('up-document');\n fauxDocument.append(node);\n fauxDocument.documentElement = node;\n return fauxDocument;\n }\n rootSelector() {\n return up.fragment.toTarget(this._document.documentElement);\n }\n get title() {\n return this._fromHead(this._getTitleText);\n }\n _getHead() {\n if (this._isFullDocument) {\n return this._document.head;\n }\n }\n _fromHead(fn) {\n let head = this._getHead();\n return head && fn(head);\n }\n get metaTags() {\n return this._fromHead(up.history.findMetaTags);\n }\n get assets() {\n return this._fromHead(up.script.findAssets);\n }\n get lang() {\n if (this._isFullDocument) {\n return up.history.getLang(this._document);\n }\n }\n _getTitleText(head) {\n return head.querySelector('title')?.textContent;\n }\n select(selector) {\n let finder = new up.FragmentFinder({\n selector: selector,\n origin: this._rediscoveredOrigin,\n document: this._document,\n match: this._match,\n });\n return finder.find();\n }\n selectSteps(steps) {\n return steps.filter((step) => {\n return this._trySelectStep(step) || this._cannotMatchStep(step);\n });\n }\n commitSteps(steps) {\n return steps.filter((step) => this.commitElement(step.newElement));\n }\n _trySelectStep(step) {\n if (step.newElement) {\n return true;\n }\n let newElement = this.select(step.selector);\n if (!newElement) {\n return;\n }\n let { selectEvent } = step;\n if (selectEvent) {\n selectEvent.newFragment = newElement;\n selectEvent.renderOptions = step.originalRenderOptions;\n up.emit(step.oldElement, selectEvent, { callback: step.selectCallback });\n if (selectEvent.defaultPrevented) {\n return;\n }\n }\n step.newElement = newElement;\n return true;\n }\n _cannotMatchStep(step) {\n if (!step.maybe) {\n throw new up.CannotMatch();\n }\n }\n commitElement(element) {\n if (this._document.contains(element)) {\n if (!up.fragment.config.runScripts) {\n up.script.disableSubtree(element);\n }\n element.remove();\n return true;\n }\n }\n finalizeElement(element) {\n up.NonceableCallback.adoptNonces(element, this._cspNonces);\n if (this._isDocumentBroken) {\n let brokenElements = e.subtree(element, ':is(noscript,script,audio,video):not(.up-keeping, .up-keeping *)');\n u.each(brokenElements, e.fixParserDamage);\n }\n }\n },\n (() => {\n u.memoizeMethod(_a.prototype, {\n _getHead: true,\n });\n })(),\n _a);\n\n\n/***/ }),\n/* 76 */\n/***/ (() => {\n\nconst e = up.element;\nconst u = up.util;\nup.RevealMotion = class RevealMotion {\n constructor(element, options = {}) {\n this._element = element;\n this._viewport = e.get(options.viewport) || up.viewport.get(this._element);\n this._obstructionsLayer = up.layer.get(this._viewport);\n this._behavior = options.scrollBehavior ?? options.behavior ?? 'instant';\n const viewportConfig = up.viewport.config;\n this._snap = options.snap ?? options.revealSnap ?? viewportConfig.revealSnap;\n this._padding = options.padding ?? options.revealPadding ?? viewportConfig.revealPadding;\n this._top = options.top ?? options.revealTop ?? viewportConfig.revealTop;\n this._max = options.max ?? options.revealMax ?? viewportConfig.revealMax;\n this._topObstructionSelector = viewportConfig.selector('fixedTopSelectors');\n this._bottomObstructionSelector = viewportConfig.selector('fixedBottomSelectors');\n }\n start() {\n const viewportRect = this._getViewportRect(this._viewport);\n const elementRect = up.Rect.fromElement(this._element);\n if (this._max) {\n const maxPixels = u.evalOption(this._max, this._element);\n elementRect.height = Math.min(elementRect.height, maxPixels);\n }\n elementRect.grow(this._padding);\n this._substractObstructions(viewportRect);\n if (viewportRect.height < 0) {\n up.fail('Viewport has no visible area');\n }\n const originalScrollTop = this._viewport.scrollTop;\n let newScrollTop = originalScrollTop;\n if (this._top || (elementRect.height > viewportRect.height)) {\n const diff = elementRect.top - viewportRect.top;\n newScrollTop += diff;\n }\n else if (elementRect.top < viewportRect.top) {\n newScrollTop -= (viewportRect.top - elementRect.top);\n }\n else if (elementRect.bottom > viewportRect.bottom) {\n newScrollTop += (elementRect.bottom - viewportRect.bottom);\n }\n else {\n }\n if (u.isNumber(this._snap) && (newScrollTop < this._snap) && (elementRect.top < (0.5 * viewportRect.height))) {\n newScrollTop = 0;\n }\n if (newScrollTop !== originalScrollTop) {\n this._viewport.scrollTo({ top: newScrollTop, behavior: this._behavior });\n }\n }\n _getViewportRect() {\n if (up.viewport.isRoot(this._viewport)) {\n return new up.Rect({\n left: 0,\n top: 0,\n width: up.viewport.rootWidth(),\n height: up.viewport.rootHeight()\n });\n }\n else {\n return up.Rect.fromElement(this._viewport);\n }\n }\n _selectObstructions(selector) {\n let elements = up.fragment.all(selector, { layer: this._obstructionsLayer });\n return u.filter(elements, e.isVisible);\n }\n _substractObstructions(viewportRect) {\n for (let obstruction of this._selectObstructions(this._topObstructionSelector)) {\n let obstructionRect = up.Rect.fromElement(obstruction);\n let diff = obstructionRect.bottom - viewportRect.top;\n if (diff > 0) {\n viewportRect.top += diff;\n viewportRect.height -= diff;\n }\n }\n for (let obstruction of this._selectObstructions(this._bottomObstructionSelector)) {\n let obstructionRect = up.Rect.fromElement(obstruction);\n let diff = viewportRect.bottom - obstructionRect.top;\n if (diff > 0) {\n viewportRect.height -= diff;\n }\n }\n }\n};\n\n\n/***/ }),\n/* 77 */\n/***/ (() => {\n\nconst u = up.util;\nconst CSS_HAS_SUFFIX_PATTERN = /:has\\(([^)]+)\\)$/;\nup.Selector = class Selector {\n constructor(selector, elementOrDocument, options = {}) {\n this._filters = [];\n if (!options.destroying) {\n this._filters.push(up.fragment.isNotDestroying);\n }\n let matchingInExternalDocument = elementOrDocument && !document.contains(elementOrDocument);\n let expandTargetLayer;\n if (matchingInExternalDocument || options.layer === 'any') {\n expandTargetLayer = up.layer.root;\n }\n else {\n options.layer ??= u.presence(elementOrDocument, u.isElement);\n this._layers = up.layer.getAll(options);\n if (!this._layers.length)\n throw new up.CannotMatch([\"Unknown layer: %o\", options.layer]);\n this._filters.push(match => u.some(this._layers, layer => layer.contains(match)));\n expandTargetLayer = this._layers[0];\n }\n let expandedTargets = up.fragment.expandTargets(selector, { ...options, layer: expandTargetLayer });\n this._selectors = expandedTargets.map((target) => {\n if (!up.browser.canHasSelector()) {\n target = target.replace(CSS_HAS_SUFFIX_PATTERN, (match, descendantSelector) => {\n this._filters.push(element => element.querySelector(descendantSelector));\n return '';\n });\n }\n return target || '*';\n });\n this._unionSelector = this._selectors.join() || 'match-none';\n }\n matches(element) {\n return element.matches(this._unionSelector) && this._passesFilter(element);\n }\n closest(element) {\n let parentElement;\n if (this.matches(element)) {\n return element;\n }\n else if (parentElement = element.parentElement) {\n return this.closest(parentElement);\n }\n }\n _passesFilter(element) {\n return u.every(this._filters, filter => filter(element));\n }\n descendants(root = document) {\n const results = u.flatMap(this._selectors, selector => root.querySelectorAll(selector));\n return u.filter(results, element => this._passesFilter(element));\n }\n subtree(root) {\n const results = [];\n if (!(root instanceof Document) && this.matches(root)) {\n results.push(root);\n }\n results.push(...this.descendants(root));\n return results;\n }\n};\n\n\n/***/ }),\n/* 78 */\n/***/ (() => {\n\nconst u = up.util;\nconst e = up.element;\nup.Tether = class Tether {\n constructor(options) {\n up.migrate.handleTetherOptions?.(options);\n this._anchor = options.anchor;\n this._align = options.align;\n this._position = options.position;\n this._alignAxis = (this._position === 'top') || (this._position === 'bottom') ? 'horizontal' : 'vertical';\n this._viewport = up.viewport.get(this._anchor);\n this.parent = this._viewport === e.root ? document.body : this._viewport;\n this._syncOnScroll = !this._viewport.contains(this._anchor.offsetParent);\n }\n start(element) {\n this._element = element;\n this._element.style.position = 'absolute';\n this._setOffset(0, 0);\n this.sync();\n this._changeEventSubscription('on');\n }\n stop() {\n this._changeEventSubscription('off');\n }\n _changeEventSubscription(fn) {\n let doScheduleSync = this._scheduleSync.bind(this);\n up[fn](window, 'resize', doScheduleSync);\n if (this._syncOnScroll) {\n up[fn](this._viewport, 'scroll', doScheduleSync);\n }\n }\n _scheduleSync() {\n clearTimeout(this.syncTimer);\n return this.syncTimer = u.task(this.sync.bind(this));\n }\n isDetached() {\n return !this.parent.isConnected || !this._anchor.isConnected;\n }\n sync() {\n const elementBox = this._element.getBoundingClientRect();\n const elementMargin = {\n top: e.styleNumber(this._element, 'margin-top'),\n right: e.styleNumber(this._element, 'margin-right'),\n bottom: e.styleNumber(this._element, 'margin-bottom'),\n left: e.styleNumber(this._element, 'margin-left')\n };\n const anchorBox = this._anchor.getBoundingClientRect();\n let left;\n let top;\n switch (this._alignAxis) {\n case 'horizontal': {\n switch (this._position) {\n case 'top':\n top = anchorBox.top - elementMargin.bottom - elementBox.height;\n break;\n case 'bottom':\n top = anchorBox.top + anchorBox.height + elementMargin.top;\n break;\n }\n switch (this._align) {\n case 'left':\n left = anchorBox.left + elementMargin.left;\n break;\n case 'center':\n left = anchorBox.left + (0.5 * (anchorBox.width - elementBox.width));\n break;\n case 'right':\n left = (anchorBox.left + anchorBox.width) - elementBox.width - elementMargin.right;\n break;\n }\n break;\n }\n case 'vertical': {\n switch (this._align) {\n case 'top':\n top = anchorBox.top + elementMargin.top;\n break;\n case 'center':\n top = anchorBox.top + (0.5 * (anchorBox.height - elementBox.height));\n break;\n case 'bottom':\n top = (anchorBox.top + anchorBox.height) - elementBox.height - elementMargin.bottom;\n break;\n }\n switch (this._position) {\n case 'left':\n left = anchorBox.left - elementMargin.right - elementBox.width;\n break;\n case 'right':\n left = anchorBox.left + anchorBox.width + elementMargin.left;\n break;\n }\n break;\n }\n }\n if (u.isDefined(left) || u.isDefined(top)) {\n this._moveTo(left, top);\n }\n else {\n up.fail('Invalid tether constraints: %o', this._describeConstraints());\n }\n }\n _describeConstraints() {\n return { position: this._position, align: this._align };\n }\n _moveTo(targetLeft, targetTop) {\n const elementBox = this._element.getBoundingClientRect();\n this._setOffset((targetLeft - elementBox.left) + this.offsetLeft, (targetTop - elementBox.top) + this.offsetTop);\n }\n _setOffset(left, top) {\n this.offsetLeft = left;\n this.offsetTop = top;\n e.setStyle(this._element, { left, top }, 'px');\n }\n};\n\n\n/***/ }),\n/* 79 */\n/***/ (() => {\n\nconst u = up.util;\nup.URLPattern = class URLPattern {\n constructor(fullPattern) {\n this._groups = [];\n const positiveList = [];\n const negativeList = [];\n for (let pattern of u.parseTokens(fullPattern)) {\n if (pattern[0] === '-') {\n negativeList.push(pattern.substring(1));\n }\n else {\n positiveList.push(pattern);\n }\n }\n this._positiveRegexp = this._buildRegexp(positiveList, true);\n this._negativeRegexp = this._buildRegexp(negativeList, false);\n }\n _buildRegexp(list, capture) {\n if (!list.length) {\n return;\n }\n list = u.flatMap(list, u.matchableURLPatternAtom);\n list = list.map(u.escapeRegExp);\n let reCode = list.join('|');\n reCode = reCode.replace(/\\\\\\*/g, '.*?');\n reCode = reCode.replace(/(:|\\\\\\$)([a-z][\\w-]*)/ig, (match, type, name) => {\n if (type === '\\\\$') {\n if (capture) {\n this._groups.push({ name, cast: Number });\n }\n return '(\\\\d+)';\n }\n else {\n if (capture) {\n this._groups.push({ name, cast: String });\n }\n return '([^/?#]+)';\n }\n });\n return new RegExp('^(?:' + reCode + ')$');\n }\n test(url, doNormalize = true) {\n if (doNormalize) {\n url = u.matchableURL(url);\n }\n return this._positiveRegexp.test(url) && !this._isExcluded(url);\n }\n recognize(url, doNormalize = true) {\n if (doNormalize) {\n url = u.matchableURL(url);\n }\n let match = this._positiveRegexp.exec(url);\n if (match && !this._isExcluded(url)) {\n const resolution = {};\n this._groups.forEach((group, groupIndex) => {\n let value = match[groupIndex + 1];\n if (value) {\n return resolution[group.name] = group.cast(value);\n }\n });\n return resolution;\n }\n }\n _isExcluded(url) {\n return this._negativeRegexp?.test(url);\n }\n};\n\n\n/***/ }),\n/* 80 */\n/***/ (() => {\n\nup.framework = (function () {\n let readyState = 'evaling';\n function emitReset() {\n up.emit('up:framework:reset', { log: false });\n }\n function boot() {\n if (readyState !== 'configuring') {\n console.error('Unpoly has already booted');\n return;\n }\n let issue = supportIssue();\n if (!issue) {\n readyState = 'booting';\n up.emit('up:framework:boot', { log: false });\n readyState = 'booted';\n up.emit('up:framework:booted', { log: false });\n }\n else {\n console.error(\"Unpoly cannot boot: %s\", issue);\n }\n }\n function mustBootManually() {\n let unpolyScript = document.currentScript;\n if (unpolyScript?.async) {\n return true;\n }\n if (unpolyScript?.getAttribute('up-boot') === 'manual') {\n return true;\n }\n if (document.readyState === 'complete') {\n return true;\n }\n }\n function onEvaled() {\n up.emit('up:framework:evaled', { log: false });\n if (mustBootManually()) {\n console.debug('Call up.boot() after you have configured Unpoly');\n }\n else {\n document.addEventListener('DOMContentLoaded', boot);\n }\n readyState = 'configuring';\n }\n function startExtension() {\n if (readyState !== 'configuring') {\n throw new Error('Unpoly extensions must be loaded before booting');\n }\n readyState = 'evaling';\n }\n function stopExtension() {\n readyState = 'configuring';\n }\n function isSupported() {\n return !supportIssue();\n }\n function supportIssue() {\n for (let feature of ['URL', 'Proxy', 'Promise', 'DOMParser', 'FormData']) {\n if (!window[feature]) {\n return `Browser doesn't support the ${feature} API`;\n }\n }\n if (document.compatMode === 'BackCompat') {\n return 'Browser is in quirks mode (missing DOCTYPE?)';\n }\n }\n return {\n onEvaled,\n boot,\n startExtension,\n stopExtension,\n reset: emitReset,\n get evaling() { return readyState === 'evaling'; },\n get booted() { return readyState === 'booted'; },\n get beforeBoot() { return readyState !== 'booting' && readyState !== 'booted'; },\n isSupported,\n };\n})();\nup.boot = up.framework.boot;\n\n\n/***/ }),\n/* 81 */\n/***/ (() => {\n\nup.event = (function () {\n const u = up.util;\n const e = up.element;\n function reset() {\n for (let globalElement of [window, document, e.root, document.body]) {\n for (let listener of up.EventListener.allNonDefault(globalElement)) {\n listener.unbind();\n }\n }\n }\n function on(...args) {\n return buildListenerGroup(args).bind();\n }\n function off(...args) {\n return buildListenerGroup(args).unbind();\n }\n function buildListenerGroup(args, options) {\n return up.EventListenerGroup.fromBindArgs(args, options);\n }\n function buildEmitter(args) {\n return up.EventEmitter.fromEmitArgs(args);\n }\n function emit(...args) {\n return buildEmitter(args).emit();\n }\n function build(...args) {\n const props = u.extractOptions(args);\n const type = args[0] || props.type || up.fail('Missing event type');\n const event = new Event(type, { bubbles: true, cancelable: true });\n Object.assign(event, u.omit(props, ['type', 'target']));\n return event;\n }\n function assertEmitted(...args) {\n return buildEmitter(args).assertEmitted();\n }\n function onEscape(listener) {\n return on('keydown', function (event) {\n if (event.key === 'Escape') {\n return listener(event);\n }\n });\n }\n function halt(event, options = {}) {\n if (options.log)\n up.log.putsEvent(event);\n event.stopImmediatePropagation();\n event.preventDefault();\n }\n const keyModifiers = ['metaKey', 'shiftKey', 'ctrlKey', 'altKey'];\n function isUnmodified(event) {\n return (u.isUndefined(event.button) || (event.button === 0)) &&\n !u.some(keyModifiers, modifier => event[modifier]);\n }\n function isSyntheticClick(event) {\n return u.isMissing(event.clientX);\n }\n function fork(originalEvent, newType, copyKeys = []) {\n const newEvent = build(newType, u.pick(originalEvent, copyKeys));\n newEvent.originalEvent = originalEvent;\n ['stopPropagation', 'stopImmediatePropagation', 'preventDefault'].forEach(function (key) {\n const originalMethod = newEvent[key];\n return newEvent[key] = function () {\n originalEvent[key]();\n return originalMethod.call(newEvent);\n };\n });\n if (originalEvent.defaultPrevented) {\n newEvent.preventDefault();\n }\n return newEvent;\n }\n function executeEmitAttr(event, element) {\n if (!isUnmodified(event)) {\n return;\n }\n const eventType = e.attr(element, 'up-emit');\n const eventProps = e.jsonAttr(element, 'up-emit-props');\n const forkedEvent = fork(event, eventType);\n Object.assign(forkedEvent, eventProps);\n up.emit(element, forkedEvent);\n }\n on('up:click', '[up-emit]', executeEmitAttr);\n let inputDevices = ['unknown'];\n function getInputDevice() {\n return u.last(inputDevices);\n }\n function observeInputDevice(newModality) {\n inputDevices.push(newModality);\n setTimeout(() => inputDevices.pop());\n }\n on('keydown keyup', { capture: true }, () => observeInputDevice('key'));\n on('pointerdown pointerup', { capture: true }, () => observeInputDevice('pointer'));\n on('up:framework:reset', reset);\n return {\n on,\n off,\n build,\n emit,\n assertEmitted,\n onEscape,\n halt,\n isUnmodified,\n isSyntheticClick,\n fork,\n keyModifiers,\n get inputDevice() { return getInputDevice(); }\n };\n})();\nup.on = up.event.on;\nup.off = up.event.off;\nup.emit = up.event.emit;\n\n\n/***/ }),\n/* 82 */\n/***/ (() => {\n\nup.protocol = (function () {\n const u = up.util;\n const e = up.element;\n const headerize = function (camel) {\n const header = camel.replace(/(^.|[A-Z])/g, char => '-' + char.toUpperCase());\n return 'X-Up' + header;\n };\n const extractHeader = function (xhr, shortHeader, parseFn = u.identity) {\n let value = xhr.getResponseHeader(headerize(shortHeader));\n if (value) {\n return parseFn(value);\n }\n };\n function targetFromXHR(xhr) {\n return extractHeader(xhr, 'target');\n }\n function parseModifyCacheValue(value) {\n if (value === 'false') {\n return false;\n }\n else {\n return value;\n }\n }\n function evictCacheFromXHR(xhr) {\n return extractHeader(xhr, 'evictCache', parseModifyCacheValue);\n }\n function expireCacheFromXHR(xhr) {\n return extractHeader(xhr, 'expireCache') || up.migrate.clearCacheFromXHR?.(xhr);\n }\n function contextFromXHR(xhr) {\n return extractHeader(xhr, 'context', JSON.parse);\n }\n function methodFromXHR(xhr) {\n return extractHeader(xhr, 'method', u.normalizeMethod);\n }\n function titleFromXHR(xhr) {\n return up.migrate.titleFromXHR?.(xhr) ?? extractHeader(xhr, 'title', JSON.parse);\n }\n function eventPlansFromXHR(xhr) {\n return extractHeader(xhr, 'events', JSON.parse);\n }\n function acceptLayerFromXHR(xhr) {\n return extractHeader(xhr, 'acceptLayer', JSON.parse);\n }\n function dismissLayerFromXHR(xhr) {\n return extractHeader(xhr, 'dismissLayer', JSON.parse);\n }\n const initialRequestMethod = u.memoize(function () {\n return u.normalizeMethod(up.browser.popCookie('_up_method'));\n });\n function locationFromXHR(xhr) {\n return extractHeader(xhr, 'location') || xhr.responseURL;\n }\n const config = new up.Config(() => ({\n methodParam: '_method',\n csrfParam() { return e.metaContent('csrf-param'); },\n csrfToken() { return e.metaContent('csrf-token'); },\n cspNonce() { return e.metaContent('csp-nonce'); },\n csrfHeader: 'X-CSRF-Token',\n maxHeaderSize: 2048,\n }));\n function csrfHeader() {\n return u.evalOption(config.csrfHeader);\n }\n function csrfParam() {\n return u.evalOption(config.csrfParam);\n }\n function csrfToken() {\n return u.evalOption(config.csrfToken);\n }\n function cspNonce() {\n return u.evalOption(config.cspNonce);\n }\n function cspNoncesFromHeader(cspHeader) {\n let nonces = [];\n if (cspHeader) {\n let parts = cspHeader.split(/\\s*;\\s*/);\n for (let part of parts) {\n if (part.indexOf('script-src') === 0) {\n let noncePattern = /'nonce-([^']+)'/g;\n let match;\n while (match = noncePattern.exec(part)) {\n nonces.push(match[1]);\n }\n }\n }\n }\n return nonces;\n }\n function wrapMethod(method, params) {\n params.add(config.methodParam, method);\n return 'POST';\n }\n return {\n config,\n locationFromXHR,\n titleFromXHR,\n targetFromXHR,\n methodFromXHR,\n acceptLayerFromXHR,\n contextFromXHR,\n dismissLayerFromXHR,\n eventPlansFromXHR,\n expireCacheFromXHR,\n evictCacheFromXHR,\n csrfHeader,\n csrfParam,\n csrfToken,\n cspNonce,\n initialRequestMethod,\n headerize,\n wrapMethod,\n cspNoncesFromHeader,\n };\n})();\n\n\n/***/ }),\n/* 83 */\n/***/ (() => {\n\nup.log = (function () {\n const u = up.util;\n const config = new up.LogConfig();\n function printToStandard(...args) {\n if (config.enabled) {\n printToStream('log', ...args);\n }\n }\n const printToWarn = (...args) => printToStream('warn', ...args);\n const printToError = (...args) => printToStream('error', ...args);\n function printToStream(stream, trace, message, ...args) {\n printToStreamStyled(stream, trace, '', message, ...args);\n }\n function printToStreamStyled(stream, trace, customStyles, message, ...args) {\n if (message) {\n if (config.format) {\n console[stream](`%c${trace}%c ${message}`, 'color: #666666; padding: 1px 3px; border: 1px solid #bbbbbb; border-radius: 2px; font-size: 90%; display: inline-block;' + customStyles, '', ...args);\n }\n else {\n console[stream](`[${trace}] ${u.sprintf(message, ...args)}`);\n }\n }\n }\n function printUserEvent(event) {\n if (config.enabled) {\n event = event.originalEvent || event;\n let color = '#5566cc';\n printToStreamStyled('log', event.type, `color: white; border-color: ${color}; background-color: ${color}`, 'Interaction on %o', event.target);\n }\n }\n function printBanner() {\n if (!config.banner) {\n return;\n }\n const logo = \" __ _____ ___ ___ / /_ __\\n\" +\n `/ // / _ \\\\/ _ \\\\/ _ \\\\/ / // / ${up.version}\\n` +\n \"\\\\___/_//_/ .__/\\\\___/_/\\\\_. / \\n\" +\n \" / / / /\\n\\n\";\n let text = \"\";\n if (!up.migrate.loaded) {\n text += \"Load unpoly-migrate.js to polyfill deprecated APIs.\\n\\n\";\n }\n if (config.enabled) {\n text += \"Call `up.log.disable()` to disable logging for this session.\";\n }\n else {\n text += \"Call `up.log.enable()` to enable logging for this session.\";\n }\n const color = 'color: #777777';\n if (config.format) {\n console.log('%c' + logo + '%c' + text, 'font-family: monospace;' + color, color);\n }\n else {\n console.log(logo + text);\n }\n }\n up.on('up:framework:boot', printBanner);\n function enable() {\n config.enabled = true;\n }\n function disable() {\n config.enabled = false;\n }\n return {\n puts: printToStandard,\n putsEvent: printUserEvent,\n error: printToError,\n warn: printToWarn,\n config,\n enable,\n disable,\n };\n})();\nup.puts = up.log.puts;\nup.warn = up.log.warn;\n\n\n/***/ }),\n/* 84 */\n/***/ (() => {\n\nup.script = (function () {\n const u = up.util;\n const e = up.element;\n const config = new up.Config(() => ({\n assetSelectors: [\n 'link[rel=stylesheet]',\n 'script[src]',\n '[up-asset]'\n ],\n noAssetSelectors: [\n '[up-asset=false]',\n ],\n nonceableAttributes: [\n 'up-watch',\n 'up-on-accepted',\n 'up-on-dismissed',\n 'up-on-loaded',\n 'up-on-rendered',\n 'up-on-finished',\n 'up-on-error',\n 'up-on-offline',\n ],\n scriptSelectors: [\n 'script'\n ],\n noScriptSelectors: [\n 'script[type=\"application/ld+json\"]'\n ]\n }));\n const SYSTEM_MACRO_PRIORITIES = {\n '[up-back]': -100,\n '[up-clickable]': -200,\n '[up-drawer]': -200,\n '[up-modal]': -200,\n '[up-cover]': -200,\n '[up-popup]': -200,\n '[up-tooltip]': -200,\n '[up-dash]': -200,\n '[up-flashes]': -200,\n '[up-expand]': -300,\n '[data-method]': -400,\n '[data-confirm]': -400,\n };\n let registeredCompilers = [];\n let registeredMacros = [];\n function registerCompiler(...args) {\n registerProcessor(args);\n }\n function registerMacro(...args) {\n registerProcessor(args, { macro: true });\n }\n function registerAttrCompiler(...args) {\n let [attr, options, valueCallback] = parseProcessorArgs(args);\n let selector = `[${attr}]`;\n let callback = (element) => {\n let value = e.booleanOrStringAttr(element, attr, options.defaultValue);\n if (!value)\n return;\n return valueCallback(element, value);\n };\n registerProcessor([selector, options, callback]);\n }\n function detectSystemMacroPriority(macroSelector) {\n macroSelector = u.evalOption(macroSelector);\n for (let substr in SYSTEM_MACRO_PRIORITIES) {\n if (macroSelector.indexOf(substr) >= 0) {\n return SYSTEM_MACRO_PRIORITIES[substr];\n }\n }\n up.fail('Unregistered priority for system macro %o', macroSelector);\n }\n function registerProcessor(args, overrides = {}) {\n let processor = buildProcessor(args, overrides);\n if (processor.macro) {\n if (up.framework.evaling) {\n processor.priority ||= detectSystemMacroPriority(processor.selector);\n }\n insertProcessor(registeredMacros, processor);\n }\n else {\n insertProcessor(registeredCompilers, processor);\n }\n }\n const parseProcessorArgs = function (args) {\n const defaults = u.extractOptions(args);\n const selector = args.shift();\n const callback = args.pop();\n const options = { ...defaults, ...u.extractOptions(args) };\n return [selector, options, callback];\n };\n function buildProcessor(args, overrides) {\n let [selector, options, callback] = parseProcessorArgs(args);\n options = u.options(options, {\n selector,\n isDefault: up.framework.evaling,\n priority: 0,\n batch: false,\n });\n return Object.assign(callback, options, overrides);\n }\n function insertProcessor(queue, newCompiler) {\n let existingCompiler;\n let index = 0;\n while ((existingCompiler = queue[index]) && (existingCompiler.priority >= newCompiler.priority)) {\n index += 1;\n }\n queue.splice(index, 0, newCompiler);\n if (up.framework.booted) {\n if (newCompiler.priority === 0) {\n for (let layer of up.layer.stack) {\n compile(layer.element, { layer, compilers: [newCompiler] });\n }\n }\n else {\n up.puts('up.compiler()', 'Compiler %s was registered after booting Unpoly. Compiler will run for future fragments only.', newCompiler.selector);\n }\n }\n return newCompiler;\n }\n function compile(fragment, options) {\n up.emit(fragment, 'up:fragment:compile', { log: false });\n let compilers = options.compilers || registeredMacros.concat(registeredCompilers);\n const pass = new up.CompilerPass(fragment, compilers, options);\n pass.run();\n }\n function registerDestructor(element, destructor) {\n let destructors = element.upDestructors;\n if (!destructors) {\n destructors = [];\n element.upDestructors = destructors;\n element.classList.add('up-can-clean');\n }\n if (u.isArray(destructor)) {\n destructors.push(...destructor);\n }\n else {\n destructors.push(destructor);\n }\n }\n function hello(element, options = {}) {\n element = up.fragment.get(element, options);\n up.puts('up.hello()', \"Compiling fragment %o\", element);\n compile(element, options);\n up.fragment.emitInserted(element);\n return element;\n }\n function clean(fragment, options = {}) {\n new up.DestructorPass(fragment, options).run();\n }\n function readData(element) {\n element = up.fragment.get(element);\n return element.upData ||= buildData(element);\n }\n function buildData(element) {\n if (!element.getAttribute) {\n return {};\n }\n let rawJSON = element.getAttribute('up-data');\n let parsedJSON;\n if (rawJSON) {\n parsedJSON = JSON.parse(rawJSON);\n if (!u.isOptions(parsedJSON)) {\n return parsedJSON;\n }\n }\n return {\n ...element.dataset,\n ...parsedJSON,\n ...element.upCompileData,\n };\n }\n function findAssets(head = document.head) {\n return head.querySelectorAll(config.selector('assetSelectors'));\n }\n function assertAssetsOK(newAssets, renderOptions) {\n let oldAssets = findAssets();\n let oldHTML = u.map(oldAssets, 'outerHTML').join();\n let newHTML = u.map(newAssets, 'outerHTML').join();\n if (oldHTML !== newHTML) {\n up.event.assertEmitted('up:assets:changed', { oldAssets, newAssets, renderOptions });\n }\n }\n function disableScript(scriptElement) {\n scriptElement.type = 'up-disabled-script';\n }\n function disableScriptsInSubtree(root) {\n let selector = config.selector('scriptSelectors');\n u.each(e.subtree(root, selector), disableScript);\n }\n function reset() {\n registeredCompilers = u.filter(registeredCompilers, 'isDefault');\n registeredMacros = u.filter(registeredMacros, 'isDefault');\n }\n up.on('up:framework:reset', reset);\n return {\n config,\n compiler: registerCompiler,\n macro: registerMacro,\n attrCompiler: registerAttrCompiler,\n destructor: registerDestructor,\n hello,\n clean,\n data: readData,\n findAssets,\n assertAssetsOK,\n disableSubtree: disableScriptsInSubtree,\n };\n})();\nup.compiler = up.script.compiler;\nup.destructor = up.script.destructor;\nup.macro = up.script.macro;\nup.data = up.script.data;\nup.hello = up.script.hello;\nup.attribute = up.script.attrCompiler;\n\n\n/***/ }),\n/* 85 */\n/***/ (() => {\n\nup.history = (function () {\n const u = up.util;\n const e = up.element;\n const config = new up.Config(() => ({\n enabled: true,\n updateMetaTags: true,\n restoreTargets: ['body'],\n metaTagSelectors: [\n 'meta',\n 'link[rel=alternate]',\n 'link[rel=canonical]',\n 'link[rel=icon]',\n '[up-meta]',\n 'script[type=\"application/ld+json\"]',\n ],\n noMetaTagSelectors: [\n 'meta[http-equiv]',\n '[up-meta=false]',\n 'meta[name=csp-nonce]',\n ],\n }));\n let previousLocation;\n let nextPreviousLocation;\n function reset() {\n previousLocation = undefined;\n nextPreviousLocation = undefined;\n trackCurrentLocation();\n }\n function currentLocation() {\n return u.normalizeURL(location.href);\n }\n function trackCurrentLocation() {\n const url = currentLocation();\n if (nextPreviousLocation !== url) {\n previousLocation = nextPreviousLocation;\n nextPreviousLocation = url;\n }\n }\n trackCurrentLocation();\n function isLocation(url, options) {\n return u.matchURLs(url, location.href, { hash: true, ...options });\n }\n function replace(location, options = {}) {\n location = u.normalizeURL(location);\n if (manipulate('replaceState', location) && (options.event !== false)) {\n emitLocationChanged({ location, reason: 'replace', log: `Replaced state for ${location}` });\n }\n }\n function push(location) {\n location = u.normalizeURL(location);\n if (!isLocation(location) && manipulate('pushState', location)) {\n emitLocationChanged({ location, reason: 'push', log: `Advanced to location ${location}` });\n }\n }\n function emitLocationChanged(props) {\n let event = up.event.build('up:location:changed', props);\n up.migrate?.renamedProperty?.(event, 'url', 'location');\n up.emit(event);\n }\n function manipulate(method, url) {\n if (config.enabled) {\n const state = buildState();\n window.history[method](state, '', url);\n trackCurrentLocation();\n return true;\n }\n }\n function buildState() {\n return { up: {} };\n }\n function restoreStateOnPop(state) {\n if (!state?.up) {\n up.puts('popstate', 'Ignoring a history state not owned by Unpoly');\n return;\n }\n let location = currentLocation();\n up.error.muteUncriticalRejection(up.render({\n guardEvent: up.event.build('up:location:restore', { location, log: `Restoring location ${location}` }),\n url: location,\n target: config.restoreTargets,\n fail: false,\n history: true,\n location,\n peel: true,\n layer: 'root',\n cache: 'auto',\n revalidate: 'auto',\n saveScroll: false,\n scroll: ['restore', 'auto'],\n saveFocus: false,\n focus: ['restore', 'auto'],\n }));\n }\n function onPop(event) {\n trackCurrentLocation();\n let location = currentLocation();\n emitLocationChanged({ location, reason: 'pop', log: `Navigated to history entry ${location}` });\n up.viewport.saveFocus({ location: previousLocation });\n up.viewport.saveScroll({ location: previousLocation });\n restoreStateOnPop(event.state);\n }\n function register() {\n window.addEventListener('popstate', onPop);\n if (up.protocol.initialRequestMethod() === 'GET') {\n replace(currentLocation(), { event: false });\n }\n }\n up.on('up:framework:boot', function () {\n if ('jasmine' in window) {\n register();\n }\n else {\n setTimeout(register, 100);\n }\n });\n function findMetaTags(head = document.head) {\n return head.querySelectorAll(config.selector('metaTagSelectors'));\n }\n function updateMetaTags(newMetaTags) {\n let oldMetaTags = findMetaTags();\n for (let oldMetaTag of oldMetaTags) {\n oldMetaTag.remove();\n }\n for (let newMetaTag of newMetaTags) {\n document.head.append(newMetaTag);\n }\n }\n function getLang(doc = document) {\n let { documentElement } = doc;\n if (documentElement.matches('html')) {\n return doc.documentElement.lang;\n }\n }\n function updateLang(newLang) {\n e.toggleAttr(e.root, 'lang', newLang, !!newLang);\n }\n up.macro('[up-back]', function (link) {\n if (previousLocation) {\n e.setMissingAttrs(link, {\n 'up-href': previousLocation,\n 'up-scroll': 'restore'\n });\n link.removeAttribute('up-back');\n up.link.makeFollowable(link);\n }\n });\n up.on('up:framework:reset', reset);\n return {\n config,\n push,\n replace,\n get location() { return currentLocation(); },\n get previousLocation() { return previousLocation; },\n isLocation,\n findMetaTags,\n updateMetaTags,\n getLang,\n updateLang,\n };\n})();\n\n\n/***/ }),\n/* 86 */\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n__webpack_require__(87);\nconst u = up.util;\nconst e = up.element;\nup.fragment = (function () {\n function upTagName(element) {\n let tagName = e.tagName(element);\n if (tagName.startsWith('up-')) {\n return tagName;\n }\n }\n const config = new up.Config(() => ({\n badTargetClasses: [/^up-/],\n targetDerivers: [\n '[up-id]',\n '[id]',\n 'html',\n 'head',\n 'body',\n 'main',\n '[up-main]',\n upTagName,\n 'link[rel][type]',\n 'link[rel=preload][href]',\n 'link[rel=preconnect][href]',\n 'link[rel=prefetch][href]',\n 'link[rel]',\n 'meta[property]',\n '*[name]',\n 'form[action]',\n 'a[href]',\n '[class]',\n '[up-flashes]',\n 'form',\n ],\n verifyDerivedTarget: true,\n navigateOptions: {\n cache: 'auto',\n revalidate: 'auto',\n feedback: true,\n fallback: true,\n focus: 'auto',\n scroll: 'auto',\n history: 'auto',\n peel: true,\n },\n match: 'region',\n runScripts: true,\n autoHistoryTargets: [':main'],\n autoFocus: ['hash', 'autofocus', 'main-if-main', 'keep', 'target-if-lost'],\n autoScroll: ['hash', 'layer-if-main'],\n autoRevalidate: (response) => response.expired,\n skipResponse: defaultSkipResponse\n }));\n u.delegate(config, ['mainTargets'], () => up.layer.config.any);\n function defaultSkipResponse({ response, expiredResponse }) {\n return !response.text || response.text === expiredResponse?.text;\n }\n function sourceOf(element, options = {}) {\n element = getSmart(element, options);\n return e.closestAttr(element, 'up-source');\n }\n function normalizeSource(source) {\n return u.normalizeURL(source, { hash: false });\n }\n function timeOf(element) {\n let value = e.closestAttr(element, 'up-time');\n if (value && value !== 'false') {\n if (/^\\d+$/.test(value)) {\n value = Number(value) * 1000;\n }\n return new Date(value);\n }\n }\n function etagOf(element) {\n let value = e.closestAttr(element, 'up-etag');\n if (value && value !== 'false') {\n return value;\n }\n }\n const render = up.mockable((...args) => {\n let options = parseTargetAndOptions(args);\n return new up.RenderJob(options).execute();\n });\n const navigate = up.mockable((...args) => {\n const options = parseTargetAndOptions(args);\n return render({ ...options, navigate: true });\n });\n function emitFragmentInserted(element) {\n return up.emit(element, 'up:fragment:inserted', {\n log: ['Inserted fragment %o', element],\n });\n }\n function emitFragmentKeep(keepPlan) {\n let { oldElement, newElement: newFragment, newData, renderOptions } = keepPlan;\n const log = ['Keeping fragment %o', oldElement];\n const callback = e.callbackAttr(oldElement, 'up-on-keep', { exposedKeys: ['newFragment', 'newData'] });\n return up.emit(oldElement, 'up:fragment:keep', { newFragment, newData, renderOptions, log, callback });\n }\n function emitFragmentDestroyed(fragment, options) {\n const log = options.log ?? ['Destroyed fragment %o', fragment];\n const parent = options.parent || document;\n return up.emit(parent, 'up:fragment:destroyed', { fragment, parent, log });\n }\n function isNotDestroying(element) {\n return !element.closest('.up-destroying');\n }\n function isAlive(fragment) {\n return fragment.isConnected && isNotDestroying(fragment);\n }\n function getSmart(...args) {\n const options = u.extractOptions(args);\n const selector = args.pop();\n const root = args[0];\n if (u.isElementish(selector)) {\n return e.get(selector);\n }\n if (root) {\n return getDumb(root, selector, options);\n }\n return new up.FragmentFinder({\n selector,\n origin: options.origin,\n layer: options.layer,\n match: options.match,\n }).find();\n }\n function getDumb(...args) {\n return getAll(...args)[0];\n }\n function getAll(...args) {\n const options = u.extractOptions(args);\n let selectorString = args.pop();\n const root = args[0];\n if (u.isElement(selectorString)) {\n return [selectorString];\n }\n if (u.isList(selectorString)) {\n return selectorString;\n }\n let selector = new up.Selector(selectorString, root, options);\n return selector.descendants(root);\n }\n function getSubtree(element, selector, options = {}) {\n return new up.Selector(selector, element, options).subtree(element);\n }\n function contains(root, selectorOrElement) {\n if (u.isElement(selectorOrElement)) {\n return e.contains(root, selectorOrElement) && up.layer.get(root).contains(selectorOrElement);\n }\n else {\n return getSubtree(root, selectorOrElement).length > 0;\n }\n }\n function closest(element, selector, options) {\n return new up.Selector(selector, element, options).closest(element);\n }\n function destroy(...args) {\n const options = parseTargetAndOptions(args);\n if (options.element = getSmart(options.target, options)) {\n new up.Change.DestroyFragment(options).execute();\n }\n return up.migrate.formerlyAsync?.('up.destroy()');\n }\n function parseTargetAndOptions(args) {\n const options = u.parseArgIntoOptions(args, 'target');\n if (u.isElement(options.target)) {\n options.origin ||= options.target;\n }\n return options;\n }\n function markFragmentAsDestroying(element) {\n element.classList.add('up-destroying');\n element.setAttribute('aria-hidden', 'true');\n }\n function reload(...args) {\n const options = parseTargetAndOptions(args);\n options.target ||= ':main';\n const element = getSmart(options.target, options);\n options.url ||= sourceOf(element);\n options.headers = u.merge(options.headers, conditionalHeaders(element));\n if (options.keepData || e.booleanAttr(element, 'up-keep-data')) {\n options.data = up.data(element);\n }\n up.migrate.postprocessReloadOptions?.(options);\n return render(options);\n }\n function conditionalHeaders(element) {\n let headers = {};\n let time = timeOf(element);\n if (time) {\n headers['If-Modified-Since'] = time.toUTCString();\n }\n let etag = etagOf(element);\n if (etag) {\n headers['If-None-Match'] = etag;\n }\n return headers;\n }\n function visit(url, options) {\n return navigate({ ...options, url });\n }\n const KEY_PATTERN = /^(onFail|on|fail)?(.+)$/;\n function successKey(key) {\n let match = KEY_PATTERN.exec(key);\n if (match) {\n let [_, prefix, suffix] = match;\n switch (prefix) {\n case 'onFail':\n return 'on' + u.upperCaseFirst(suffix);\n case 'fail':\n return u.lowerCaseFirst(suffix);\n }\n }\n }\n function failKey(key) {\n let match = KEY_PATTERN.exec(key);\n if (match) {\n let [_, prefix, suffix] = match;\n switch (prefix) {\n case 'on':\n return 'onFail' + u.upperCaseFirst(suffix);\n case undefined:\n return 'fail' + u.upperCaseFirst(suffix);\n }\n }\n }\n function toTarget(element, options) {\n return u.presence(element, u.isString) || tryToTarget(element, options) || cannotTarget(element);\n }\n function isTargetable(element) {\n return !!tryToTarget(element);\n }\n function untargetableMessage(element) {\n return `Cannot derive good target selector from a <${e.tagName(element)}> element without identifying attributes. Try setting an [id] or configure up.fragment.config.targetDerivers.`;\n }\n function cannotTarget(element) {\n throw new up.CannotTarget(untargetableMessage(element));\n }\n function tryToTarget(element, options) {\n return u.findResult(config.targetDerivers, function (deriver) {\n let target = deriveTarget(element, deriver);\n if (target && isGoodTarget(target, element, options)) {\n return target;\n }\n });\n }\n function deriveTarget(element, deriver) {\n if (u.isFunction(deriver)) {\n return deriver(element);\n }\n else if (element.matches(deriver)) {\n try {\n return deriveTargetFromPattern(element, deriver);\n }\n catch (e) {\n if (e instanceof up.CannotParse) {\n return deriver;\n }\n else {\n throw e;\n }\n }\n }\n }\n function deriveTargetFromPattern(element, deriver) {\n let { includePath, excludeRaw } = up.element.parseSelector(deriver);\n if (includePath.length !== 1) {\n throw new up.CannotParse(deriver);\n }\n let { tagName, id, classNames, attributes } = includePath[0];\n let result = '';\n if (tagName === '*') {\n result += e.tagName(element);\n }\n else if (tagName) {\n result += tagName;\n }\n for (let className of classNames) {\n result += e.classSelector(className);\n }\n if (id) {\n result += e.idSelector(id);\n }\n for (let attributeName in attributes) {\n let attributeValue = attributes[attributeName] || element.getAttribute(attributeName);\n if (attributeName === 'id') {\n result += e.idSelector(attributeValue);\n }\n else if (attributeName === 'class') {\n for (let goodClass of goodClassesForTarget(element)) {\n result += e.classSelector(goodClass);\n }\n }\n else {\n result += e.attrSelector(attributeName, attributeValue);\n }\n }\n if (excludeRaw) {\n result += excludeRaw;\n }\n return result;\n }\n function isGoodTarget(target, element, options = {}) {\n return !isAlive(element) || !config.verifyDerivedTarget || up.fragment.get(target, { layer: element, ...options }) === element;\n }\n function matchesPattern(pattern, str) {\n if (u.isRegExp(pattern)) {\n return pattern.test(str);\n }\n else {\n return pattern === str;\n }\n }\n function goodClassesForTarget(element) {\n let isGood = (klass) => !u.some(config.badTargetClasses, (badTargetClass) => matchesPattern(badTargetClass, klass));\n return u.filter(element.classList, isGood);\n }\n const MAIN_PSEUDO = /:main\\b/;\n const LAYER_PSEUDO = /:layer\\b/;\n const ORIGIN_PSEUDO = /:origin\\b/;\n function containsMainPseudo(target) {\n return MAIN_PSEUDO.test(target);\n }\n function expandTargets(targets, options = {}) {\n const { layer } = options;\n if (layer !== 'new' && !(layer instanceof up.Layer)) {\n up.fail('Must pass an up.Layer as { layer } option, but got %o', layer);\n }\n targets = u.copy(u.wrapList(targets));\n const expanded = [];\n while (targets.length) {\n let target = targets.shift();\n if (target === true)\n target = ':main';\n if (containsMainPseudo(target)) {\n let mode = resolveMode(options);\n let replaced = up.layer.mainTargets(mode).map((mainTarget) => target.replace(MAIN_PSEUDO, mainTarget));\n targets.unshift(...replaced);\n }\n else if (LAYER_PSEUDO.test(target)) {\n if (layer === 'new' || layer.opening)\n continue;\n let firstSwappableTarget = toTarget(layer.getFirstSwappableElement(), options);\n targets.unshift(target.replace(LAYER_PSEUDO, firstSwappableTarget));\n }\n else if (u.isElementish(target)) {\n expanded.push(toTarget(target, options));\n }\n else if (u.isString(target)) {\n expanded.push(resolveOrigin(target, options));\n }\n }\n return u.uniq(expanded);\n }\n function resolveMode({ layer, mode }) {\n if (layer === 'new') {\n return mode || up.fail('Must pass a { mode } option together with { layer: \"new\" }');\n }\n else {\n return layer.mode;\n }\n }\n function modernResolveOrigin(target, { origin } = {}) {\n return target.replace(ORIGIN_PSEUDO, function (match) {\n if (origin) {\n return toTarget(origin);\n }\n else {\n up.fail('Missing { origin } element to resolve \"%s\" reference (found in %s)', match, target);\n }\n });\n }\n function resolveOrigin(...args) {\n return (up.migrate.resolveOrigin || modernResolveOrigin)(...args);\n }\n function splitTarget(target) {\n return u.parseTokens(target, { separator: 'comma' });\n }\n function parseTargetSteps(target, options = {}) {\n let defaultPlacement = options.defaultPlacement || 'swap';\n let defaultMaybe = options.defaultMaybe ?? false;\n let steps = [];\n let simpleSelectors = splitTarget(target);\n for (let selector of simpleSelectors) {\n if (selector === ':none')\n continue;\n let placement = defaultPlacement;\n let maybe = defaultMaybe;\n selector = selector.replace(/\\b::?(before|after)\\b/, (_match, customPlacement) => {\n placement = customPlacement;\n return '';\n });\n selector = selector.replace(/\\b:maybe\\b/, () => {\n maybe = true;\n return '';\n });\n const step = {\n ...options,\n selector,\n placement,\n maybe,\n originalRenderOptions: options,\n };\n steps.push(step);\n }\n return steps;\n }\n function hasAutoHistory(newFragments, layer) {\n let vanillaSelector = expandTargets(config.autoHistoryTargets, { layer }).join();\n for (let newFragment of newFragments) {\n if (e.subtree(newFragment, vanillaSelector).length) {\n return true;\n }\n }\n up.puts('up.render()', \"Will not auto-update history because fragment doesn't contain a selector from up.fragment.config.autoHistoryTargets\");\n return false;\n }\n function matches(element, selector, options = {}) {\n element = e.get(element);\n if (u.isElement(selector)) {\n let target = tryToTarget(selector);\n return target && element.matches(target);\n }\n else {\n return new up.Selector(selector, element, options).matches(element);\n }\n }\n function shouldRevalidate(request, response, options = {}) {\n return request.fromCache && u.evalAutoOption(options.revalidate, config.autoRevalidate, response);\n }\n function targetForSteps(steps) {\n let bestSteps = steps.filter((step) => !step.maybe || step.oldElement?.isConnected);\n let selectors = u.map(bestSteps, 'selector');\n return selectors.join(', ') || ':none';\n }\n function isContainedByRivalStep(steps, candidateStep) {\n return u.some(steps, function (rivalStep) {\n return (rivalStep !== candidateStep) &&\n ((rivalStep.placement === 'swap') || (rivalStep.placement === 'content')) &&\n rivalStep.oldElement.contains(candidateStep.oldElement);\n });\n }\n function compressNestedSteps(steps) {\n if (steps.length < 2)\n return steps;\n let compressed = u.uniqBy(steps, 'oldElement');\n compressed = u.reject(compressed, step => isContainedByRivalStep(compressed, step));\n return compressed;\n }\n function abort(...args) {\n let options = parseTargetAndOptions(args);\n let testFn;\n let { reason, newLayer } = options;\n let elements;\n if (options.target) {\n elements = getAll(options.target, options);\n testFn = (request) => request.isPartOfSubtree(elements);\n reason ||= 'Aborting requests within fragment';\n }\n else {\n let layers = up.layer.getAll(options);\n elements = u.map(layers, 'element');\n testFn = (request) => u.contains(layers, request.layer);\n reason ||= 'Aborting requests within ' + layers.join(', ');\n }\n let testFnWithAbortable = (request) => request.abortable && testFn(request);\n up.network.abort(testFnWithAbortable, { ...options, reason });\n for (let element of elements) {\n up.emit(element, 'up:fragment:aborted', { reason, newLayer, log: false });\n }\n }\n function onAborted(fragment, callback) {\n let guard = (event) => event.target.contains(fragment);\n let unsubscribe = up.on('up:fragment:aborted', { guard }, callback);\n up.destructor(fragment, unsubscribe);\n return unsubscribe;\n }\n function onFirstIntersect(origin, callback, { margin = 0 } = {}) {\n if (e.isIntersectingWindow(origin, { margin })) {\n callback();\n return;\n }\n function processIntersectEntries(entries) {\n for (let entry of entries) {\n if (entry.isIntersecting) {\n disconnect();\n callback();\n return;\n }\n }\n }\n let observer = new IntersectionObserver(processIntersectEntries, { rootMargin: `${margin}px` });\n let disconnect = () => observer.disconnect();\n observer.observe(origin);\n onAborted(origin, disconnect);\n }\n up.on('up:framework:boot', function () {\n const { documentElement } = document;\n documentElement.setAttribute('up-source', normalizeSource(location.href));\n up.hello(documentElement);\n if (!up.browser.canPushState()) {\n return up.warn('Cannot push history changes. Next fragment update will load in a new page.');\n }\n });\n return {\n config,\n reload,\n destroy,\n render,\n navigate,\n get: getSmart,\n getDumb,\n all: getAll,\n subtree: getSubtree,\n contains,\n closest,\n source: sourceOf,\n normalizeSource,\n visit,\n markAsDestroying: markFragmentAsDestroying,\n emitInserted: emitFragmentInserted,\n emitDestroyed: emitFragmentDestroyed,\n emitKeep: emitFragmentKeep,\n successKey,\n failKey,\n expandTargets,\n resolveOrigin,\n toTarget,\n tryToTarget,\n isTargetable,\n matches,\n hasAutoHistory,\n time: timeOf,\n etag: etagOf,\n shouldRevalidate,\n abort,\n onAborted,\n onFirstIntersect,\n splitTarget,\n parseTargetSteps,\n isAlive,\n isNotDestroying,\n targetForSteps,\n compressNestedSteps,\n containsMainPseudo,\n };\n})();\nup.reload = up.fragment.reload;\nup.destroy = up.fragment.destroy;\nup.render = up.fragment.render;\nup.navigate = up.fragment.navigate;\nup.visit = up.fragment.visit;\nu.delegate(up, ['context'], () => up.layer.current);\n\n\n/***/ }),\n/* 87 */\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n\n\n/***/ }),\n/* 88 */\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n__webpack_require__(89);\nup.viewport = (function () {\n const u = up.util;\n const e = up.element;\n const f = up.fragment;\n const config = new up.Config(() => ({\n viewportSelectors: ['[up-viewport]', '[up-fixed]'],\n fixedTopSelectors: ['[up-fixed~=top]'],\n fixedBottomSelectors: ['[up-fixed~=bottom]'],\n anchoredRightSelectors: ['[up-anchored~=right]', '[up-fixed~=top]', '[up-fixed~=bottom]', '[up-fixed~=right]'],\n revealSnap: 200,\n revealPadding: 0,\n revealTop: false,\n revealMax() { return 0.5 * window.innerHeight; },\n autoFocusVisible({ element, inputDevice }) { return inputDevice === 'key' || up.form.isField(element); }\n }));\n const bodyShifter = new up.BodyShifter();\n up.compiler(config.selectorFn('anchoredRightSelectors'), function (element) {\n return bodyShifter.onAnchoredElementInserted(element);\n });\n function reveal(element, options) {\n options = u.options(options);\n element = f.get(element, options);\n if (!(options.layer = up.layer.get(element))) {\n up.fail('Cannot reveal a detached element');\n }\n if (options.peel) {\n options.layer.peel();\n }\n const motion = new up.RevealMotion(element, options);\n motion.start();\n return up.migrate.formerlyAsync?.('up.reveal()') || true;\n }\n function doFocus(element, { preventScroll, force, inputDevice, focusVisible } = {}) {\n if (force) {\n if (!element.hasAttribute('tabindex') && element.tabIndex === -1) {\n element.setAttribute('tabindex', '-1');\n }\n }\n inputDevice ??= up.event.inputDevice;\n focusVisible ??= 'auto';\n focusVisible = u.evalAutoOption(focusVisible, config.autoFocusVisible, { element, inputDevice });\n element.focus({\n preventScroll: true,\n focusVisible,\n });\n removeFocusClasses(element);\n element.classList.add(focusVisible ? 'up-focus-visible' : 'up-focus-hidden');\n if (!preventScroll) {\n return reveal(element);\n }\n }\n function removeFocusClasses(element) {\n element?.classList.remove('up-focus-hidden', 'up-focus-visible');\n }\n up.on('focusin', function ({ relatedTarget }) {\n removeFocusClasses(relatedTarget);\n });\n function tryFocus(element, options) {\n doFocus(element, options);\n return element === document.activeElement;\n }\n function revealHash(hash = location.hash, options) {\n let match = firstHashTarget(hash, options);\n if (match) {\n return up.reveal(match, { top: true });\n }\n }\n function allSelector() {\n return [rootSelector(), ...config.viewportSelectors].join();\n }\n function closest(target, options = {}) {\n const element = f.get(target, options);\n return element.closest(allSelector());\n }\n function getSubtree(element, options = {}) {\n element = f.get(element, options);\n return e.subtree(element, allSelector());\n }\n function getAround(element, options = {}) {\n element = f.get(element, options);\n return e.around(element, allSelector());\n }\n function getAll(options = {}) {\n return f.all(allSelector(), options);\n }\n function rootSelector() {\n return getRoot().tagName;\n }\n function getRoot() {\n return document.scrollingElement;\n }\n function rootWidth() {\n return e.root.clientWidth;\n }\n function rootHeight() {\n return e.root.clientHeight;\n }\n function isRoot(element) {\n return element === getRoot();\n }\n function rootScrollbarWidth() {\n return window.innerWidth - rootWidth();\n }\n function scrollTopKey(viewport) {\n return up.fragment.tryToTarget(viewport);\n }\n function fixedElements(root = document) {\n const queryParts = ['[up-fixed]'].concat(config.fixedTopSelectors).concat(config.fixedBottomSelectors);\n return root.querySelectorAll(queryParts.join());\n }\n function saveScroll(...args) {\n const [viewports, options] = parseOptions(args);\n const location = options.location || options.layer.location;\n if (location) {\n const tops = getScrollTopsForSave(viewports);\n options.layer.lastScrollTops.set(location, tops);\n }\n }\n function getScrollTopsForSave(viewports) {\n let tops = {};\n for (let viewport of viewports) {\n let key = scrollTopKey(viewport);\n if (key) {\n tops[key] = viewport.scrollTop;\n }\n else {\n up.warn('up.viewport.saveScroll()', 'Cannot save scroll positions for untargetable viewport %o', viewport);\n }\n }\n return tops;\n }\n function restoreScroll(...args) {\n const [viewports, options] = parseOptions(args);\n const { location } = options.layer;\n const locationScrollTops = options.layer.lastScrollTops.get(location);\n if (locationScrollTops) {\n setScrollTops(viewports, locationScrollTops);\n up.puts('up.viewport.restoreScroll()', 'Restored scroll positions to %o', locationScrollTops);\n return true;\n }\n else {\n return false;\n }\n }\n function saveFocus(options = {}) {\n const layer = up.layer.get(options);\n const location = options.location || layer.location;\n if (location) {\n const focusCapsule = up.FocusCapsule.preserve(layer);\n layer.lastFocusCapsules.set(location, focusCapsule);\n }\n }\n function restoreFocus(options = {}) {\n const layer = up.layer.get(options);\n const location = options.location || layer.location;\n const locationCapsule = options.layer.lastFocusCapsules.get(location);\n if (locationCapsule && locationCapsule.restore(layer)) {\n up.puts('up.viewport.restoreFocus()', 'Restored focus to \"%s\"', locationCapsule.target);\n return true;\n }\n else {\n return false;\n }\n }\n function newStateCache() {\n return new up.FIFOCache({ capacity: 30, normalizeKey: u.matchableURL });\n }\n function parseOptions(args) {\n const options = u.copy(u.extractOptions(args));\n options.layer = up.layer.get(options);\n let viewports;\n if (args[0]) {\n viewports = [closest(args[0], options)];\n }\n else if (options.around) {\n viewports = getAround(options.around, options);\n }\n else {\n viewports = getAll(options);\n }\n return [viewports, options];\n }\n function resetScroll(...args) {\n const [viewports, _options] = parseOptions(args);\n setScrollTops(viewports, {});\n }\n function setScrollTops(viewports, tops) {\n for (let viewport of viewports) {\n const key = scrollTopKey(viewport);\n viewport.scrollTop = tops[key] || 0;\n }\n }\n function absolutize(element, options = {}) {\n const viewport = closest(element);\n const viewportRect = viewport.getBoundingClientRect();\n const originalRect = element.getBoundingClientRect();\n const boundsRect = new up.Rect({\n left: originalRect.left - viewportRect.left,\n top: originalRect.top - viewportRect.top,\n width: originalRect.width,\n height: originalRect.height\n });\n options.afterMeasure?.();\n e.setStyle(element, {\n position: element.style.position === 'static' ? 'static' : 'relative',\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto',\n width: '100%',\n height: '100%'\n });\n const bounds = e.createFromSelector('up-bounds');\n e.insertBefore(element, bounds);\n bounds.appendChild(element);\n const moveBounds = function (diffX, diffY) {\n boundsRect.left += diffX;\n boundsRect.top += diffY;\n return e.setStyle(bounds, boundsRect, 'px');\n };\n moveBounds(0, 0);\n const newElementRect = element.getBoundingClientRect();\n moveBounds(originalRect.left - newElementRect.left, originalRect.top - newElementRect.top);\n u.each(fixedElements(element), e.fixedToAbsolute);\n return {\n bounds,\n moveBounds\n };\n }\n function firstHashTarget(hash, options = {}) {\n if (hash = pureHash(hash)) {\n const selector = [\n e.attrSelector('id', hash),\n 'a' + e.attrSelector('name', hash)\n ].join();\n return f.get(selector, options);\n }\n }\n function pureHash(value) {\n return value?.replace(/^#/, '');\n }\n function focusedElementWithin(scopeElement) {\n const focusedElement = document.activeElement;\n if (up.fragment.contains(scopeElement, focusedElement)) {\n return focusedElement;\n }\n }\n const CURSOR_PROPS = ['selectionStart', 'selectionEnd', 'scrollLeft', 'scrollTop'];\n function copyCursorProps(from, to = {}) {\n for (let key of CURSOR_PROPS) {\n try {\n to[key] = from[key];\n }\n catch (error) {\n }\n }\n return to;\n }\n let userScrolled = false;\n up.on('scroll', { once: true, beforeBoot: true }, () => userScrolled = true);\n up.on('up:framework:boot', function () {\n u.task(function () {\n if (!userScrolled) {\n return revealHash();\n }\n });\n });\n up.on(window, 'hashchange', () => revealHash());\n return {\n reveal,\n revealHash,\n firstHashTarget,\n config,\n get: closest,\n subtree: getSubtree,\n around: getAround,\n get root() { return getRoot(); },\n rootWidth,\n rootHeight,\n isRoot,\n rootScrollbarWidth,\n saveScroll,\n restoreScroll,\n resetScroll,\n saveFocus,\n restoreFocus,\n absolutize,\n focus: doFocus,\n tryFocus,\n newStateCache,\n focusedElementWithin,\n copyCursorProps,\n bodyShifter,\n };\n})();\nup.focus = up.viewport.focus;\nup.reveal = up.viewport.reveal;\n\n\n/***/ }),\n/* 89 */\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n\n\n/***/ }),\n/* 90 */\n/***/ (() => {\n\nup.motion = (function () {\n const u = up.util;\n const e = up.element;\n let namedAnimations = {};\n let namedTransitions = {};\n const motionController = new up.MotionController('motion');\n const config = new up.Config(() => ({\n duration: 175,\n easing: 'ease',\n enabled: !matchMedia('(prefers-reduced-motion: reduce)').matches\n }));\n function pickDefault(registry) {\n return u.pickBy(registry, 'isDefault');\n }\n function reset() {\n motionController.reset();\n namedAnimations = pickDefault(namedAnimations);\n namedTransitions = pickDefault(namedTransitions);\n }\n function isEnabled() {\n return config.enabled;\n }\n function animate(element, animation, options) {\n element = up.fragment.get(element);\n options = u.options(options);\n let animationFn = findAnimationFn(animation);\n const willRun = willAnimate(element, animation, options);\n animationFn = up.error.guardFn(animationFn);\n if (willRun) {\n const runNow = () => animationFn(element, options);\n return motionController.startFunction(element, runNow, options);\n }\n else {\n return skipAnimate(element, animation);\n }\n }\n function willAnimate(element, animationOrTransition, options) {\n applyConfig(options);\n return isEnabled() && !isNone(animationOrTransition) && (options.duration > 0) && !e.isSingleton(element);\n }\n function skipAnimate(element, animation) {\n if (u.isOptions(animation)) {\n e.setStyle(element, animation);\n }\n return Promise.resolve();\n }\n function animateNow(element, lastFrame, options) {\n if (up.migrate.loaded)\n lastFrame = up.migrate.fixStyleProps(lastFrame);\n options = { ...options, finishEvent: motionController.finishEvent };\n const cssTransition = new up.CSSTransition(element, lastFrame, options);\n return cssTransition.start();\n }\n function applyConfig(options) {\n options.easing ??= config.easing;\n options.duration ??= config.duration;\n }\n function findNamedAnimation(name) {\n return namedAnimations[name] || up.fail(\"Unknown animation %o\", name);\n }\n function finish(element) {\n return motionController.finish(element);\n }\n function morph(oldElement, newElement, transitionObject, options) {\n options = u.options(options);\n applyConfig(options);\n oldElement = up.fragment.get(oldElement);\n newElement = up.fragment.get(newElement);\n let transitionFn = findTransitionFn(transitionObject);\n const willMorph = willAnimate(oldElement, transitionFn, options);\n transitionFn = up.error.guardFn(transitionFn);\n const beforeStart = u.pluckKey(options, 'beforeStart') || u.noop;\n const afterInsert = u.pluckKey(options, 'afterInsert') || u.noop;\n const beforeDetach = u.pluckKey(options, 'beforeDetach') || u.noop;\n const afterDetach = u.pluckKey(options, 'afterDetach') || u.noop;\n const scrollNew = u.pluckKey(options, 'scrollNew') || u.noop;\n beforeStart();\n if (willMorph) {\n if (motionController.isActive(oldElement) && (options.trackMotion === false)) {\n return transitionFn(oldElement, newElement, options);\n }\n up.puts('up.morph()', 'Morphing %o to %o with transition %O over %d ms', oldElement, newElement, transitionObject, options.duration);\n const viewport = up.viewport.get(oldElement);\n const scrollTopBeforeReveal = viewport.scrollTop;\n const oldRemote = up.viewport.absolutize(oldElement, {\n afterMeasure() {\n e.insertBefore(oldElement, newElement);\n afterInsert();\n }\n });\n const trackable = async function () {\n scrollNew();\n const scrollTopAfterReveal = viewport.scrollTop;\n oldRemote.moveBounds(0, scrollTopAfterReveal - scrollTopBeforeReveal);\n await transitionFn(oldElement, newElement, options);\n beforeDetach();\n oldRemote.bounds.remove();\n afterDetach();\n };\n return motionController.startFunction([oldElement, newElement], trackable, options);\n }\n else {\n beforeDetach();\n swapElementsDirectly(oldElement, newElement);\n afterInsert();\n afterDetach();\n scrollNew();\n return Promise.resolve();\n }\n }\n function findTransitionFn(object) {\n if (isNone(object)) {\n return undefined;\n }\n else if (u.isFunction(object)) {\n return object;\n }\n else if (u.isArray(object)) {\n return composeTransitionFn(...object);\n }\n else if (u.isString(object)) {\n let namedTransition;\n if (object.indexOf('/') >= 0) {\n return composeTransitionFn(...object.split('/'));\n }\n else if (namedTransition = namedTransitions[object]) {\n return findTransitionFn(namedTransition);\n }\n }\n else {\n up.fail(\"Unknown transition %o\", object);\n }\n }\n function composeTransitionFn(oldAnimation, newAnimation) {\n if (!isNone(oldAnimation) && !isNone(newAnimation)) {\n const oldAnimationFn = findAnimationFn(oldAnimation) || u.asyncNoop;\n const newAnimationFn = findAnimationFn(newAnimation) || u.asyncNoop;\n return (oldElement, newElement, options) => Promise.all([\n oldAnimationFn(oldElement, options),\n newAnimationFn(newElement, options)\n ]);\n }\n }\n function findAnimationFn(object) {\n if (isNone(object)) {\n return undefined;\n }\n else if (u.isFunction(object)) {\n return object;\n }\n else if (u.isString(object)) {\n return findNamedAnimation(object);\n }\n else if (u.isOptions(object)) {\n return (element, options) => animateNow(element, object, options);\n }\n else {\n up.fail('Unknown animation %o', object);\n }\n }\n const swapElementsDirectly = up.mockable(function (oldElement, newElement) {\n oldElement.replaceWith(newElement);\n });\n function motionOptions(element, options, parserOptions) {\n options = u.options(options);\n let parser = new up.OptionsParser(element, options, parserOptions);\n parser.booleanOrString('animation');\n parser.booleanOrString('transition');\n parser.string('easing');\n parser.number('duration');\n return options;\n }\n function registerTransition(name, transition) {\n const fn = findTransitionFn(transition);\n fn.isDefault = up.framework.evaling;\n namedTransitions[name] = fn;\n }\n function registerAnimation(name, animation) {\n const fn = findAnimationFn(animation);\n fn.isDefault = up.framework.evaling;\n namedAnimations[name] = fn;\n }\n up.on('up:framework:boot', function () {\n if (!isEnabled()) {\n up.puts('up.motion', 'Animations are disabled');\n }\n });\n function isNone(animationOrTransition) {\n return !animationOrTransition || animationOrTransition === 'none';\n }\n function registerOpacityAnimation(name, from, to) {\n registerAnimation(name, function (element, options) {\n element.style.opacity = 0;\n e.setStyle(element, { opacity: from });\n return animateNow(element, { opacity: to }, options);\n });\n }\n registerOpacityAnimation('fade-in', 0, 1);\n registerOpacityAnimation('fade-out', 1, 0);\n function translateCSS(dx, dy) {\n return { transform: `translate(${dx}px, ${dy}px)` };\n }\n function noTranslateCSS() {\n return { transform: '' };\n }\n function untranslatedBox(element) {\n e.setStyle(element, noTranslateCSS());\n return element.getBoundingClientRect();\n }\n function registerMoveAnimations(direction, boxToTransform) {\n const animationToName = `move-to-${direction}`;\n const animationFromName = `move-from-${direction}`;\n registerAnimation(animationToName, function (element, options) {\n const box = untranslatedBox(element);\n const transform = boxToTransform(box);\n return animateNow(element, transform, options);\n });\n registerAnimation(animationFromName, function (element, options) {\n const box = untranslatedBox(element);\n const transform = boxToTransform(box);\n e.setStyle(element, transform);\n return animateNow(element, noTranslateCSS(), options);\n });\n }\n registerMoveAnimations('top', function (box) {\n const travelDistance = box.top + box.height;\n return translateCSS(0, -travelDistance);\n });\n registerMoveAnimations('bottom', function (box) {\n const travelDistance = up.viewport.rootHeight() - box.top;\n return translateCSS(0, travelDistance);\n });\n registerMoveAnimations('left', function (box) {\n const travelDistance = box.left + box.width;\n return translateCSS(-travelDistance, 0);\n });\n registerMoveAnimations('right', function (box) {\n const travelDistance = up.viewport.rootWidth() - box.left;\n return translateCSS(travelDistance, 0);\n });\n registerTransition('cross-fade', ['fade-out', 'fade-in']);\n registerTransition('move-left', ['move-to-left', 'move-from-right']);\n registerTransition('move-right', ['move-to-right', 'move-from-left']);\n registerTransition('move-up', ['move-to-top', 'move-from-bottom']);\n registerTransition('move-down', ['move-to-bottom', 'move-from-top']);\n up.on('up:framework:reset', reset);\n return {\n morph,\n animate,\n finish,\n finishCount() { return motionController.finishCount; },\n transition: registerTransition,\n animation: registerAnimation,\n config,\n isEnabled,\n isNone,\n willAnimate,\n swapElementsDirectly,\n motionOptions,\n };\n})();\nup.transition = up.motion.transition;\nup.animation = up.motion.animation;\nup.morph = up.motion.morph;\nup.animate = up.motion.animate;\n\n\n/***/ }),\n/* 91 */\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n__webpack_require__(92);\nconst u = up.util;\nup.network = (function () {\n const config = new up.Config(() => ({\n concurrency: 6,\n wrapMethod: true,\n cacheSize: 70,\n cacheExpireAge: 15 * 1000,\n cacheEvictAge: 90 * 60 * 1000,\n badResponseTime: 400,\n fail(response) { return (response.status < 200 || response.status > 299) && response.status !== 304; },\n autoCache(request) { return request.isSafe(); },\n expireCache(request, _response) { return !request.isSafe(); },\n evictCache: false,\n progressBar: true,\n timeout: 90000,\n }));\n const queue = new up.Request.Queue();\n const cache = new up.Request.Cache();\n let progressBar = null;\n function reset() {\n abortRequests();\n queue.reset();\n cache.reset();\n progressBar?.destroy();\n progressBar = null;\n }\n function makeRequest(...args) {\n const options = parseRequestOptions(args);\n const request = new up.Request(options);\n processRequest(request);\n return request;\n }\n function parseRequestOptions(args) {\n const options = u.extractOptions(args);\n if (!options.url) {\n options.url = args[0];\n }\n up.migrate.handleRequestOptions?.(options);\n return options;\n }\n function processRequest(request) {\n useCachedRequest(request) || queueRequest(request);\n }\n function useCachedRequest(newRequest) {\n let cachedRequest;\n if (newRequest.willCache() && (cachedRequest = cache.get(newRequest))) {\n up.puts('up.request()', 'Re-using previous request to %s', newRequest.description);\n if (!newRequest.background) {\n queue.promoteToForeground(cachedRequest);\n }\n cachedRequest.mergeIfUnsent(newRequest);\n cache.track(cachedRequest, newRequest, { onIncompatible: processRequest });\n return true;\n }\n }\n function queueRequest(request) {\n handleCaching(request);\n queue.asap(request);\n return true;\n }\n function handleCaching(request) {\n if (request.willCache()) {\n cache.put(request);\n request.onLoading = () => cache.reindex(request);\n }\n u.always(request, function (responseOrError) {\n let expireCache = responseOrError.expireCache ?? request.expireCache ?? u.evalOption(config.expireCache, request, responseOrError);\n if (expireCache) {\n cache.expire(expireCache, { except: request });\n }\n let evictCache = responseOrError.evictCache ?? request.evictCache ?? u.evalOption(config.evictCache, request, responseOrError);\n if (evictCache) {\n cache.evict(evictCache, { except: request });\n }\n let hasCacheEntry = cache.get(request);\n let isResponse = responseOrError instanceof up.Response;\n let isNetworkError = !isResponse;\n let isSuccessResponse = isResponse && responseOrError.ok;\n let isErrorResponse = isResponse && !responseOrError.ok;\n let isEmptyResponse = isResponse && responseOrError.none;\n if (isErrorResponse) {\n cache.evict(request.url);\n }\n else if (isNetworkError || isEmptyResponse) {\n cache.evict(request);\n }\n else if (isSuccessResponse && hasCacheEntry) {\n cache.put(request);\n }\n });\n }\n function isBusy() {\n return queue.isBusy();\n }\n function loadPage(requestsAttrs) {\n new up.Request(requestsAttrs).loadPage();\n }\n function abortRequests(...args) {\n up.migrate.preprocessAbortArgs?.(args);\n queue.abort(...args);\n }\n function registerAliasForRedirect(request, response) {\n if (request.cache && response.url && request.url !== response.url) {\n const newRequest = u.variant(request, {\n method: response.method,\n url: response.url,\n cacheRoute: null,\n });\n cache.alias(request, newRequest);\n }\n }\n function isSafeMethod(method) {\n return u.contains(['GET', 'OPTIONS', 'HEAD'], u.normalizeMethod(method));\n }\n function onLate() {\n if (u.evalOption(config.progressBar)) {\n progressBar = new up.ProgressBar();\n }\n }\n function onRecover() {\n progressBar?.conclude();\n }\n up.on('up:network:late', onLate);\n up.on('up:network:recover', onRecover);\n up.on('up:framework:reset', reset);\n return {\n request: makeRequest,\n cache,\n isBusy,\n isSafeMethod,\n config,\n abort: abortRequests,\n registerAliasForRedirect,\n queue,\n loadPage,\n };\n})();\nup.request = up.network.request;\nup.cache = up.network.cache;\n\n\n/***/ }),\n/* 92 */\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n\n\n/***/ }),\n/* 93 */\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n__webpack_require__(94);\nconst u = up.util;\nconst e = up.element;\nup.layer = (function () {\n const LAYER_CLASSES = [\n up.Layer.Root,\n up.Layer.Modal,\n up.Layer.Popup,\n up.Layer.Drawer,\n up.Layer.Cover\n ];\n const config = new up.Config(function () {\n const newConfig = {\n mode: 'modal',\n any: {\n mainTargets: [\n \"[up-main='']\",\n 'main',\n ':layer'\n ]\n },\n root: {\n mainTargets: ['[up-main~=root]'],\n history: true\n },\n overlay: {\n mainTargets: ['[up-main~=overlay]'],\n openAnimation: 'fade-in',\n closeAnimation: 'fade-out',\n dismissLabel: '\u00D7',\n dismissAriaLabel: 'Dismiss dialog',\n dismissable: true,\n history: 'auto'\n },\n cover: {\n mainTargets: ['[up-main~=cover]']\n },\n drawer: {\n mainTargets: ['[up-main~=drawer]'],\n backdrop: true,\n position: 'left',\n size: 'medium',\n openAnimation(layer) {\n switch (layer.position) {\n case 'left': return 'move-from-left';\n case 'right': return 'move-from-right';\n }\n },\n closeAnimation(layer) {\n switch (layer.position) {\n case 'left': return 'move-to-left';\n case 'right': return 'move-to-right';\n }\n }\n },\n modal: {\n mainTargets: ['[up-main~=modal]'],\n backdrop: true,\n size: 'medium'\n },\n popup: {\n mainTargets: ['[up-main~=popup]'],\n position: 'bottom',\n size: 'medium',\n align: 'left',\n dismissable: 'outside key'\n },\n foreignOverlaySelectors: ['dialog']\n };\n for (let Class of LAYER_CLASSES) {\n newConfig[Class.mode].Class = Class;\n }\n return newConfig;\n });\n let stack = null;\n let handlers = [];\n function mainTargets(mode) {\n return u.flatMap(modeConfigs(mode), 'mainTargets');\n }\n function modeConfigs(mode) {\n if (mode === 'root') {\n return [config.root, config.any];\n }\n else {\n return [config[mode], config.overlay, config.any];\n }\n }\n function normalizeLayerOption(options) {\n if (options.layer instanceof up.Layer)\n return;\n up.migrate.handleLayerOptions?.(options);\n if (u.isGiven(options.layer)) {\n let match = String(options.layer).match(/^(new|shatter|swap)( (\\w+))?/);\n if (match) {\n options.layer = 'new';\n const openMethod = match[1];\n const shorthandMode = match[3];\n options.mode ||= shorthandMode || config.mode;\n if (openMethod === 'swap') {\n if (up.layer.isOverlay()) {\n options.baseLayer = 'parent';\n }\n }\n else if (openMethod === 'shatter') {\n options.baseLayer = 'root';\n }\n }\n }\n else if (options.mode) {\n options.layer = 'new';\n }\n else if (u.isElementish(options.target)) {\n options.layer = stack.get(options.target, { normalizeLayerOptions: false });\n }\n else if (options.origin) {\n options.layer = 'origin';\n }\n else {\n options.layer = 'current';\n }\n }\n function setBaseLayerOption(options) {\n if (options.baseLayer instanceof up.Layer)\n return;\n options.baseLayer = stack.get('current', { ...options, normalizeLayerOptions: false });\n }\n function normalizeOptions(options) {\n normalizeLayerOption(options);\n options.context ??= {};\n setBaseLayerOption(options);\n }\n function build(options, beforeNew) {\n const { mode } = options;\n const { Class } = config[mode];\n const configs = u.reverse(modeConfigs(mode));\n let handleDeprecatedConfig = up.migrate.handleLayerConfig;\n if (handleDeprecatedConfig) {\n configs.forEach(handleDeprecatedConfig);\n }\n options.openAnimation ??= u.pluckKey(options, 'animation');\n options = u.mergeDefined(...configs, { mode, stack }, options);\n if (beforeNew) {\n options = beforeNew(options);\n }\n return new Class(options);\n }\n function openCallbackAttr(link, attr) {\n return e.callbackAttr(link, attr, { exposedKeys: ['layer'] });\n }\n function closeCallbackAttr(link, attr) {\n return e.callbackAttr(link, attr, { exposedKeys: ['layer', 'value', 'response'] });\n }\n function reset() {\n stack.reset();\n handlers = u.filter(handlers, 'isDefault');\n }\n async function open(options) {\n options = u.options(options, {\n layer: 'new',\n defaultToEmptyContent: true,\n navigate: true\n });\n let result = await up.render(options);\n return result.layer;\n }\n function ask(options) {\n return new Promise(function (resolve, reject) {\n options = {\n ...options,\n onAccepted: (event) => resolve(event.value),\n onDismissed: (event) => reject(event.value)\n };\n open(options);\n });\n }\n function anySelector() {\n return u.map(LAYER_CLASSES, Class => Class.selector()).join();\n }\n function optionToString(option) {\n if (u.isString(option)) {\n return `layer \"${option}\"`;\n }\n else {\n return option.toString();\n }\n }\n function isWithinForeignOverlay(element) {\n let selector = config.selector('foreignOverlaySelectors');\n return !!(selector && element.closest(selector));\n }\n up.on('up:fragment:destroyed', function () {\n stack.sync();\n });\n up.on('up:framework:evaled', function () {\n stack = new up.LayerStack();\n });\n up.on('up:framework:reset', reset);\n const api = {\n config,\n mainTargets,\n open,\n build,\n ask,\n normalizeOptions,\n openCallbackAttr,\n closeCallbackAttr,\n anySelector,\n optionToString,\n get stack() { return stack.layers; },\n isWithinForeignOverlay\n };\n u.delegate(api, [\n 'get',\n 'getAll',\n 'root',\n 'overlays',\n 'current',\n 'front',\n 'sync',\n 'count',\n 'dismissOverlays'\n ], () => stack);\n u.delegate(api, [\n 'accept',\n 'dismiss',\n 'isRoot',\n 'isOverlay',\n 'isFront',\n 'on',\n 'off',\n 'emit',\n 'parent',\n 'history',\n 'location',\n 'mode',\n 'context',\n 'element',\n 'contains',\n 'size',\n 'affix'\n ], () => stack.current);\n return api;\n})();\n\n\n/***/ }),\n/* 94 */\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n\n\n/***/ }),\n/* 95 */\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n__webpack_require__(96);\nup.link = (function () {\n const u = up.util;\n const e = up.element;\n let lastMousedownTarget = null;\n const ATTRS_WITH_LOCAL_HTML = '[up-content], [up-fragment], [up-document]';\n const ATTRS_SUGGESTING_FOLLOW = `${ATTRS_WITH_LOCAL_HTML}, [up-target], [up-layer], [up-transition], [up-preload]`;\n const DEFAULT_INTERACTIVE_ELEMENT = 'a[href], button';\n const config = new up.Config(() => ({\n followSelectors: ['[up-follow]', `a:is(${ATTRS_SUGGESTING_FOLLOW})`],\n noFollowSelectors: ['[up-follow=false]', 'a[download]', 'a[target]', 'a[href^=\"javascript:\"]', 'a[href^=\"mailto:\"]', `a[href^=\"#\"]:not(${ATTRS_WITH_LOCAL_HTML})`, e.crossOriginSelector('href'), e.crossOriginSelector('up-href')],\n instantSelectors: ['[up-instant]'],\n noInstantSelectors: ['[up-instant=false]', '[onclick]'],\n preloadSelectors: ['[up-preload]'],\n noPreloadSelectors: ['[up-preload=false]'],\n clickableSelectors: ['[up-clickable]', '[up-follow]', '[up-emit]', '[up-accept]', '[up-dismiss]', `a:is(${ATTRS_SUGGESTING_FOLLOW})`],\n noClickableSelectors: ['[up-clickable=false]', DEFAULT_INTERACTIVE_ELEMENT],\n preloadDelay: 90,\n }));\n function isPreloadDisabled(link) {\n return !up.browser.canPushState() || !isFollowable(link) || !willCache(link);\n }\n function willCache(link) {\n const options = parseRequestOptions(link);\n if (options.url) {\n if (options.cache == null) {\n options.cache = 'auto';\n }\n options.basic = true;\n const request = new up.Request(options);\n return request.willCache();\n }\n }\n function reset() {\n lastMousedownTarget = null;\n }\n const follow = up.mockable(function (link, options, parserOptions) {\n return up.render(followOptions(link, options, parserOptions));\n });\n function parseRequestOptions(link, options, parserOptions) {\n options = u.options(options);\n const parser = new up.OptionsParser(link, options, { ...parserOptions, fail: false });\n options.url = followURL(link, options);\n options.method = followMethod(link, options);\n parser.json('headers');\n parser.json('params');\n parser.booleanOrString('cache');\n parser.booleanOrString('expireCache');\n parser.booleanOrString('evictCache');\n parser.booleanOrString('revalidate');\n parser.booleanOrString('abort');\n parser.boolean('abortable');\n parser.boolean('background');\n parser.string('contentType');\n parser.number('badResponseTime');\n parser.number('timeout');\n return options;\n }\n function followOptions(link, options, parserOptions) {\n link = up.fragment.get(link);\n options = u.options(options);\n const parser = new up.OptionsParser(link, options, { fail: true, ...parserOptions });\n parser.include(parseRequestOptions);\n parser.boolean('feedback');\n options.origin ||= link;\n parser.boolean('fail');\n parser.boolean('navigate', { default: true });\n parser.string('confirm', { attr: ['up-confirm', 'data-confirm'] });\n parser.string('target');\n parser.booleanOrString('fallback');\n parser.string('match');\n parser.string('content');\n parser.string('fragment');\n parser.string('document');\n parser.boolean('useKeep');\n parser.boolean('useHungry');\n parser.callback('onLoaded');\n parser.callback('onRendered', { mainKey: 'result' });\n parser.callback('onFinished', { mainKey: 'result' });\n parser.callback('onOffline', { mainKey: 'error' });\n parser.callback('onError', { mainKey: 'error' });\n parser.boolean('peel');\n parser.string('layer');\n parser.string('baseLayer');\n parser.json('context');\n parser.string('mode');\n parser.string('align');\n parser.string('position');\n parser.string('class');\n parser.string('size');\n parser.booleanOrString('dismissable');\n parser.parse(up.layer.openCallbackAttr, 'onOpened');\n parser.parse(up.layer.closeCallbackAttr, 'onAccepted');\n parser.parse(up.layer.closeCallbackAttr, 'onDismissed');\n parser.string('acceptEvent');\n parser.string('dismissEvent');\n parser.string('acceptLocation');\n parser.string('dismissLocation');\n parser.booleanOrString('history');\n parser.booleanOrString('focus');\n parser.boolean('saveScroll');\n parser.boolean('saveFocus');\n parser.booleanOrString('scroll');\n parser.boolean('revealTop');\n parser.number('revealMax');\n parser.number('revealPadding');\n parser.number('revealSnap');\n parser.string('scrollBehavior');\n parser.booleanOrString('history');\n parser.booleanOrString('location');\n parser.booleanOrString('title');\n parser.boolean('metaTags');\n parser.booleanOrString('lang');\n parser.include(up.motion.motionOptions);\n options.guardEvent ??= up.event.build('up:link:follow', { log: ['Following link %o', link] });\n return options;\n }\n function preload(link, options) {\n link = up.fragment.get(link);\n let issue = preloadIssue(link);\n if (issue) {\n return Promise.reject(new up.Error(issue));\n }\n const guardEvent = up.event.build('up:link:preload', { log: ['Preloading link %o', link] });\n return follow(link, {\n abortable: false,\n ...options,\n guardEvent,\n preload: true\n });\n }\n function preloadIssue(link) {\n if (!isSafe(link)) {\n return 'Will not preload an unsafe link';\n }\n }\n function followMethod(link, options = {}) {\n return u.normalizeMethod(options.method || link.getAttribute('up-method') || link.getAttribute('data-method'));\n }\n function followURL(link, options = {}) {\n const url = options.url || link.getAttribute('up-href') || link.getAttribute('href');\n if (url !== '#') {\n return url;\n }\n }\n function isFollowable(link) {\n link = up.fragment.get(link);\n return config.matches(link, 'followSelectors');\n }\n function makeFollowable(link) {\n if (!isFollowable(link)) {\n link.setAttribute('up-follow', '');\n }\n }\n function makeClickable(element) {\n let role = element.matches('a, [up-follow]') ? 'link' : 'button';\n e.setMissingAttrs(element, {\n tabindex: '0',\n role,\n 'up-clickable': ''\n });\n element.addEventListener('keydown', function (event) {\n if ((event.key === 'Enter') || (element.role === 'button' && event.key === 'Space')) {\n return forkEventAsUpClick(event);\n }\n });\n }\n up.macro(config.selectorFn('clickableSelectors'), makeClickable);\n function shouldFollowEvent(event, link) {\n if (event.defaultPrevented) {\n return false;\n }\n const betterTargetSelector = `a, [up-follow], ${up.form.fieldSelector()}`;\n const betterTarget = event.target.closest(betterTargetSelector);\n return !betterTarget || (betterTarget === link);\n }\n function isInstant(linkOrDescendant) {\n const element = linkOrDescendant.closest(config.selector('instantSelectors'));\n return element && !isInstantDisabled(element);\n }\n function isInstantDisabled(link) {\n return config.matches(link, 'noInstantSelectors') || config.matches(link, 'noFollowSelectors');\n }\n function convertClicks(layer) {\n layer.on('click', function (event, element) {\n if (!up.event.isUnmodified(event)) {\n return;\n }\n if (isInstant(element) && lastMousedownTarget) {\n up.event.halt(event);\n }\n else if (up.event.inputDevice === 'key' || up.event.isSyntheticClick(event) || (layer.wasHitByMouseEvent(event) && !didUserDragAway(event))) {\n forkEventAsUpClick(event);\n }\n return lastMousedownTarget = null;\n });\n layer.on('mousedown', function (event, element) {\n if (!up.event.isUnmodified(event)) {\n return;\n }\n lastMousedownTarget = event.target;\n if (isInstant(element)) {\n forkEventAsUpClick(event);\n }\n });\n }\n function didUserDragAway(clickEvent) {\n return lastMousedownTarget && (lastMousedownTarget !== clickEvent.target);\n }\n function forkEventAsUpClick(originalEvent) {\n let forwardedProps = ['clientX', 'clientY', 'button', ...up.event.keyModifiers];\n const newEvent = up.event.fork(originalEvent, 'up:click', forwardedProps);\n up.emit(originalEvent.target, newEvent, { log: false });\n }\n function isSafe(link) {\n const method = followMethod(link);\n return up.network.isSafeMethod(method);\n }\n function onLoadCondition(condition, link, callback) {\n switch (condition) {\n case 'insert':\n callback();\n break;\n case 'reveal': {\n let margin = e.numberAttr(link, 'up-intersect-margin');\n up.fragment.onFirstIntersect(link, callback, { margin });\n break;\n }\n case 'hover':\n new up.LinkFollowIntent(link, callback);\n break;\n case 'manual':\n break;\n }\n }\n function loadDeferred(link, options) {\n let guardEvent = up.event.build('up:deferred:load', { log: ['Loading deferred %o', link] });\n let forcedOptions = {\n navigate: false,\n guardEvent,\n ...options,\n };\n let defaults = {\n target: ':origin',\n cache: 'auto',\n revalidate: 'auto',\n feedback: true,\n };\n return follow(link, forcedOptions, { defaults });\n }\n up.attribute('up-defer', { defaultValue: 'insert' }, function (link, condition) {\n let doLoad = () => up.error.muteUncriticalRejection(loadDeferred(link));\n onLoadCondition(condition, link, doLoad);\n });\n up.on('up:click', config.selectorFn('followSelectors'), function (event, link) {\n if (shouldFollowEvent(event, link)) {\n up.event.halt(event, { log: true });\n up.focus(link, { preventScroll: true });\n up.error.muteUncriticalRejection(follow(link));\n }\n });\n up.attribute('up-expand', { defaultValue: 'a, [up-href]', macro: true }, function (area, childLinkSelector) {\n let childLink = e.get(area, childLinkSelector);\n if (childLink) {\n e.setMissingAttrs(area, {\n 'up-href': e.attr(childLink, 'href'),\n ...e.upAttrs(childLink)\n });\n area.classList.add(...e.upClasses(childLink));\n makeFollowable(area);\n }\n });\n up.compiler(config.selectorFn('preloadSelectors'), function (link) {\n if (!isPreloadDisabled(link)) {\n let doPreload = () => up.error.muteUncriticalRejection(preload(link));\n let condition = e.booleanOrStringAttr(link, 'up-preload', null) ?? 'hover';\n onLoadCondition(condition, link, doPreload);\n }\n });\n up.on('up:framework:reset', reset);\n return {\n follow,\n followOptions,\n requestOptions: parseRequestOptions,\n preload,\n makeFollowable,\n isSafe,\n isFollowable,\n shouldFollowEvent,\n convertClicks,\n config,\n loadDeferred,\n };\n})();\nup.follow = up.link.follow;\nup.deferred = { load: up.link.loadDeferred };\n\n\n/***/ }),\n/* 96 */\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n\n\n/***/ }),\n/* 97 */\n/***/ (() => {\n\nup.form = (function () {\n const u = up.util;\n const e = up.element;\n const config = new up.Config(() => ({\n groupSelectors: ['[up-form-group]', 'fieldset', 'label', 'form'],\n fieldSelectors: ['select', 'input:not([type=submit]):not([type=image])', 'button[type]:not([type=submit])', 'textarea'],\n submitSelectors: ['form:is([up-submit], [up-target], [up-layer], [up-transition])'],\n noSubmitSelectors: ['[up-submit=false]', '[target]', e.crossOriginSelector('action')],\n submitButtonSelectors: ['input[type=submit]', 'input[type=image]', 'button[type=submit]', 'button:not([type])'],\n watchInputEvents: ['input', 'change'],\n watchInputDelay: 0,\n watchChangeEvents: ['change'],\n }));\n function fieldSelector(suffix = '') {\n return config.fieldSelectors.map(field => field + suffix).join();\n }\n function isField(element) {\n return element.matches(fieldSelector());\n }\n function findFields(root) {\n root = e.get(root);\n let fields = e.subtree(root, fieldSelector());\n if (root.matches('form[id]')) {\n const outsideFieldSelector = fieldSelector(e.attrSelector('form', root.getAttribute('id')));\n const outsideFields = up.fragment.all(outsideFieldSelector, { layer: root });\n fields.push(...outsideFields);\n fields = u.uniq(fields);\n }\n return fields;\n }\n function findSubmitButtons(root) {\n return e.subtree(root, submitButtonSelector());\n }\n function isSubmitButton(element) {\n return element?.matches(submitButtonSelector());\n }\n function submitButtonSelector() {\n return config.selector('submitButtonSelectors');\n }\n const submit = up.mockable((form, options) => {\n return up.render(submitOptions(form, options));\n });\n function submitOptions(form, options, parserOptions) {\n form = getForm(form);\n options = u.options(options);\n let parser = new up.OptionsParser(form, options, parserOptions);\n parser.include(destinationOptions);\n parser.string('failTarget', { default: up.fragment.tryToTarget(form) });\n parser.booleanOrString('disable');\n options.guardEvent ||= up.event.build('up:form:submit', {\n submitButton: options.submitButton,\n log: 'Submitting form',\n params: options.params,\n form,\n });\n options.origin ||= up.viewport.focusedElementWithin(form) || options.submitButton || form;\n parser.include(up.link.followOptions);\n return options;\n }\n function watchOptions(field, options, parserOptions = {}) {\n options = u.options(options);\n let parser = new up.OptionsParser(field, options, { ...parserOptions, closest: true, attrPrefix: 'up-watch-' });\n parser.boolean('feedback');\n parser.booleanOrString('disable');\n parser.string('event');\n parser.number('delay');\n let config = up.form.config;\n if (options.event === 'input') {\n options.event = u.evalOption(config.watchInputEvents, field);\n options.delay ??= config.watchInputDelay;\n }\n else if (options.event === 'change') {\n options.event = u.evalOption(config.watchChangeEvents, field);\n }\n options.origin ||= field;\n return options;\n }\n function disableContainer(container) {\n let focusedElement = document.activeElement;\n let focusFallback;\n let controls = [...findFields(container), ...findSubmitButtons(container)];\n for (let control of controls) {\n if (control === focusedElement) {\n focusFallback = findGroup(focusedElement);\n }\n raiseDisableStack(control);\n }\n if (focusFallback) {\n up.focus(focusFallback, { force: true, preventScroll: true });\n }\n return function () {\n controls.forEach(lowerDisableStack);\n };\n }\n function raiseDisableStack(control) {\n if (!control.upDisableCount) {\n control.upDisableCount ||= 0;\n control.upOriginalDisabled = control.disabled;\n }\n control.upDisableCount++;\n control.disabled = true;\n }\n function lowerDisableStack(control) {\n if (control.upDisableCount) {\n if (!control.disabled) {\n control.upDisableCount = 0;\n }\n else {\n control.upDisableCount--;\n if (!control.upDisableCount) {\n control.disabled = control.upOriginalDisabled;\n }\n }\n }\n }\n function disableWhile(promise, options) {\n let undoDisable = handleDisableOption(options);\n u.always(promise, undoDisable);\n }\n function handleDisableOption({ disable, origin }) {\n if (!disable)\n return u.noop;\n let missingOption = (key) => { up.fail(\"Cannot process { disable: '%s' } option without { %s }\", disable, key); };\n let getOrigin = () => origin || missingOption('origin');\n let getOriginForm = () => getScope(getOrigin());\n let containers;\n if (disable === true) {\n containers = [getOriginForm()];\n }\n else if (u.isString(disable)) {\n containers = up.fragment.subtree(getOriginForm(), disable, { origin });\n }\n return u.sequence(containers.map(disableContainer));\n }\n function destinationOptions(form, options, parserOptions) {\n options = u.options(options);\n form = getForm(form);\n const parser = new up.OptionsParser(form, options, parserOptions);\n parser.string('contentType', { attr: 'enctype' });\n parser.json('headers');\n const params = up.Params.fromForm(form);\n const submitButton = (options.submitButton ??= findSubmitButtons(form)[0]);\n if (submitButton) {\n params.addField(submitButton);\n options.method ||= submitButton.getAttribute('formmethod');\n options.url ||= submitButton.getAttribute('formaction');\n }\n params.addAll(options.params);\n options.params = params;\n parser.string('url', { attr: 'action', default: up.fragment.source(form) });\n parser.string('method', {\n attr: ['up-method', 'data-method', 'method'],\n default: 'GET',\n normalize: u.normalizeMethod\n });\n if (options.method === 'GET') {\n options.url = up.Params.stripURL(options.url);\n }\n return options;\n }\n function watch(root, ...args) {\n root = up.element.get(root);\n const callback = u.extractCallback(args) || watchCallbackFromElement(root) || up.fail('No callback given for up.watch()');\n let options = u.extractOptions(args);\n const watcher = new up.FieldWatcher(root, options, callback);\n watcher.start();\n return () => watcher.stop();\n }\n function watchCallbackFromElement(element) {\n let rawCallback = element.getAttribute('up-watch');\n if (rawCallback) {\n return up.NonceableCallback.fromString(rawCallback).toFunction('value', 'name').bind(element);\n }\n }\n function autosubmit(target, options = {}) {\n const onChange = (_diff, renderOptions) => submit(target, renderOptions);\n return watch(target, { options, batch: true }, onChange);\n }\n function getGroupSelectors() {\n return up.migrate.migratedFormGroupSelectors?.() || config.groupSelectors;\n }\n function findGroup(field) {\n return findGroupSolution(field).element;\n }\n function findGroupSolution(field) {\n return u.findResult(getGroupSelectors(), function (groupSelector) {\n let group = field.closest(groupSelector);\n if (group) {\n let goodDerivedGroupTarget = up.fragment.tryToTarget(group);\n let goodDerivedFieldTarget = up.fragment.tryToTarget(field);\n let groupHasFieldTarget = goodDerivedFieldTarget && (group !== field) && `${groupSelector}:has(${goodDerivedFieldTarget})`;\n let target = goodDerivedGroupTarget || groupHasFieldTarget;\n if (target) {\n return {\n target,\n element: group,\n origin: field\n };\n }\n }\n });\n }\n function validate(...args) {\n let options = parseValidateArgs(...args);\n let validator = up.FormValidator.forElement(options.origin);\n return validator.validate(options);\n }\n function parseValidateArgs(originOrTarget, ...args) {\n const options = u.extractOptions(args);\n if (options.origin) {\n options.target ||= up.fragment.toTarget(originOrTarget);\n }\n else {\n options.origin ||= up.fragment.get(originOrTarget);\n }\n return options;\n }\n function switcherValues(field) {\n let value;\n let meta;\n if (field.matches('input[type=checkbox]')) {\n if (field.checked) {\n value = field.value;\n meta = ':checked';\n }\n else {\n meta = ':unchecked';\n }\n }\n else if (field.matches('input[type=radio]')) {\n const form = getScope(field);\n const groupName = field.getAttribute('name');\n const checkedButton = form.querySelector(`input[type=radio]${e.attrSelector('name', groupName)}:checked`);\n if (checkedButton) {\n meta = ':checked';\n value = checkedButton.value;\n }\n else {\n meta = ':unchecked';\n }\n }\n else {\n value = field.value;\n }\n const values = [];\n if (u.isPresent(value)) {\n values.push(value);\n values.push(':present');\n }\n else {\n values.push(':blank');\n }\n if (u.isPresent(meta)) {\n values.push(meta);\n }\n return values;\n }\n function switchTargets(switcher, options = {}) {\n const targetSelector = options.target || options.target || switcher.getAttribute('up-switch');\n const form = getScope(switcher);\n targetSelector || up.fail(\"No switch target given for %o\", switcher);\n const fieldValues = switcherValues(switcher);\n for (let target of up.fragment.all(form, targetSelector)) {\n switchTarget(target, fieldValues);\n }\n }\n const switchTarget = up.mockable(function (target, fieldValues) {\n let show;\n fieldValues ||= switcherValues(findSwitcherForTarget(target));\n let hideValues = target.getAttribute('up-hide-for');\n if (hideValues) {\n hideValues = parseSwitchTokens(hideValues);\n show = u.intersect(fieldValues, hideValues).length === 0;\n }\n else {\n let showValues = target.getAttribute('up-show-for');\n showValues = showValues ? parseSwitchTokens(showValues) : [':present', ':checked'];\n show = u.intersect(fieldValues, showValues).length > 0;\n }\n e.toggle(target, show);\n target.classList.add('up-switched');\n });\n function parseSwitchTokens(str) {\n return u.parseTokens(str, { json: true });\n }\n function findSwitcherForTarget(target) {\n const form = getScope(target);\n const switchers = form.querySelectorAll('[up-switch]');\n const switcher = u.find(switchers, function (switcher) {\n const targetSelector = switcher.getAttribute('up-switch');\n return target.matches(targetSelector);\n });\n return switcher || up.fail('Could not find [up-switch] field for %o', target);\n }\n function getForm(elementOrSelector, options = {}) {\n const element = up.fragment.get(elementOrSelector, options);\n return element.form || element.closest('form');\n }\n function getScope(element, options) {\n return getForm(element, options) || up.layer.get(element).element;\n }\n function focusedField() {\n return u.presence(document.activeElement, isField);\n }\n function isSubmittable(form) {\n form = up.fragment.get(form);\n return config.matches(form, 'submitSelectors');\n }\n up.on('submit', config.selectorFn('submitSelectors'), function (event, form) {\n if (event.defaultPrevented)\n return;\n const submitButton = u.presence(event.submitter, isSubmitButton);\n up.event.halt(event, { log: true });\n up.error.muteUncriticalRejection(submit(form, { submitButton }));\n });\n up.compiler(validatingFieldSelector, function (fieldOrForm) {\n let validator = up.FormValidator.forElement(fieldOrForm);\n validator.watchContainer(fieldOrForm);\n });\n function validatingFieldSelector() {\n let includes = config.fieldSelectors.map((selector) => `${selector}[up-validate], [up-validate] ${selector}`);\n let excludes = ['[up-validate=false]'];\n return e.unionSelector(includes, excludes);\n }\n up.compiler('[up-switch]', (switcher) => {\n switchTargets(switcher);\n });\n up.on('change', '[up-switch]', (_event, switcher) => {\n switchTargets(switcher);\n });\n up.compiler('[up-show-for]:not(.up-switched), [up-hide-for]:not(.up-switched)', (element) => {\n switchTarget(element);\n });\n up.attribute('up-watch', (formOrField) => watch(formOrField));\n up.attribute('up-autosubmit', (formOrField) => autosubmit(formOrField));\n return {\n config,\n submit,\n submitOptions,\n destinationOptions,\n watchOptions,\n isSubmittable,\n watch,\n validate,\n autosubmit,\n fieldSelector,\n fields: findFields,\n isField,\n submitButtons: findSubmitButtons,\n focusedField,\n switchTarget,\n disableWhile,\n disable: disableContainer,\n group: findGroup,\n groupSolution: findGroupSolution,\n groupSelectors: getGroupSelectors,\n get: getForm,\n getScope,\n };\n})();\nup.submit = up.form.submit;\nup.watch = up.form.watch;\nup.autosubmit = up.form.autosubmit;\nup.validate = up.form.validate;\n\n\n/***/ }),\n/* 98 */\n/***/ (() => {\n\nup.feedback = (function () {\n const u = up.util;\n const e = up.element;\n const config = new up.Config(() => ({\n currentClasses: ['up-current'],\n navSelectors: ['[up-nav]', 'nav'],\n noNavSelectors: ['[up-nav=false]'],\n }));\n function reset() {\n up.layer.root.feedbackLocation = null;\n }\n const CLASS_ACTIVE = 'up-active';\n const CLASS_LOADING = 'up-loading';\n const SELECTOR_LINK = 'a, [up-href]';\n function linkURLs(link) {\n return link.upFeedbackURLs ||= new up.LinkFeedbackURLs(link);\n }\n function updateFragment(fragment, { layer } = {}) {\n layer ||= up.layer.get(fragment);\n let layerLocation = getMatchableLayerLocation(layer);\n const navSelector = config.selector('navSelectors');\n const navLinkSelector = `${navSelector} :is(${SELECTOR_LINK}), ${navSelector}:is(${SELECTOR_LINK})`;\n const links = up.fragment.all(navLinkSelector, { layer });\n for (let link of links) {\n const isCurrent = linkURLs(link).isCurrent(layerLocation);\n for (let currentClass of config.currentClasses) {\n link.classList.toggle(currentClass, isCurrent);\n }\n e.toggleAttr(link, 'aria-current', 'page', isCurrent);\n }\n }\n function getMatchableLayerLocation(layer) {\n return layer.feedbackLocation || u.matchableURL(layer.location);\n }\n function findActivatableArea(element) {\n return e.ancestor(element, SELECTOR_LINK) || element;\n }\n function showAroundRequest(request, options) {\n if (!options.feedback) {\n return;\n }\n let clean = (fn) => u.always(request, fn);\n let activeElement = getActiveElementFromRenderOptions(request);\n if (activeElement) {\n clean(e.addTemporaryClass(activeElement, CLASS_ACTIVE));\n }\n for (let fragment of request.fragments) {\n clean(e.addTemporaryClass(fragment, CLASS_LOADING));\n }\n }\n function getActiveElementFromRenderOptions(request) {\n let activeElement = request.origin;\n if (activeElement) {\n return findActivatableArea(activeElement);\n }\n }\n function updateLayerIfLocationChanged(layer) {\n const processedLocation = layer.feedbackLocation;\n const layerLocation = getMatchableLayerLocation(layer.location);\n if (!processedLocation || (processedLocation !== layerLocation)) {\n layer.feedbackLocation = layerLocation;\n updateFragment(layer.element, { layer });\n }\n }\n function onBrowserLocationChanged() {\n const frontLayer = up.layer.front;\n if (frontLayer.showsLiveHistory()) {\n updateLayerIfLocationChanged(frontLayer);\n }\n }\n up.on('up:location:changed', (_event) => {\n onBrowserLocationChanged();\n });\n up.on('up:fragment:compile', (_event, newFragment) => {\n updateFragment(newFragment);\n });\n up.on('up:layer:location:changed', (event) => {\n updateLayerIfLocationChanged(event.layer);\n });\n up.on('up:framework:reset', reset);\n return {\n config,\n showAroundRequest,\n };\n})();\n\n\n/***/ }),\n/* 99 */\n/***/ (() => {\n\nup.radio = (function () {\n const e = up.element;\n const config = new up.Config(() => ({\n hungrySelectors: ['[up-hungry]'],\n noHungrySelectors: ['[up-hungry=false]'],\n pollInterval: 30000,\n }));\n function hungrySteps(renderOptions) {\n let { useHungry, origin, layer: renderLayer } = renderOptions;\n let steps = { current: [], other: [] };\n if (!useHungry)\n return steps;\n let hungrySelector = config.selector('hungrySelectors');\n const layerPreference = [renderLayer, ...renderLayer.ancestors, ...renderLayer.descendants];\n for (let elementLayer of layerPreference) {\n let hungries = up.fragment.all(elementLayer.element, hungrySelector, { layer: elementLayer });\n for (let element of hungries) {\n let selector = up.fragment.tryToTarget(element, { origin });\n if (!selector) {\n up.warn('[up-hungry]', 'Ignoring untargetable fragment %o', element);\n continue;\n }\n let ifLayer = e.attr(element, 'up-if-layer');\n let applicableLayers = ifLayer ? up.layer.getAll(ifLayer, { baseLayer: elementLayer }) : [elementLayer];\n let motionOptions = up.motion.motionOptions(element);\n let selectEvent = up.event.build('up:fragment:hungry', { log: false });\n let selectCallback = e.callbackAttr(element, 'up-on-hungry', { exposedKeys: ['newFragment', 'renderOptions'] });\n let step = {\n selector,\n oldElement: element,\n layer: elementLayer,\n origin,\n ...motionOptions,\n placement: 'swap',\n useKeep: true,\n maybe: true,\n selectEvent,\n selectCallback,\n originalRenderOptions: renderOptions,\n };\n if (applicableLayers.includes(renderLayer)) {\n let list = renderLayer === elementLayer ? steps.current : steps.other;\n list.push(step);\n }\n }\n }\n steps.other = up.fragment.compressNestedSteps(steps.other);\n return steps;\n }\n function startPolling(fragment, options = {}) {\n up.FragmentPolling.forFragment(fragment).forceStart(options);\n }\n function stopPolling(element) {\n up.FragmentPolling.forFragment(element).forceStop();\n }\n function pollOptions(fragment, options = {}) {\n const defaults = { background: true };\n const parser = new up.OptionsParser(fragment, options, { defaults });\n parser.number('interval', { default: config.pollInterval });\n parser.string('ifLayer', { default: 'front' });\n parser.include(up.link.requestOptions);\n return options;\n }\n up.attribute('up-poll', function (fragment) {\n up.FragmentPolling.forFragment(fragment).onPollAttributeObserved();\n });\n up.macro('[up-flashes]', function (fragment) {\n e.setMissingAttrs(fragment, {\n 'up-hungry': '',\n 'up-if-layer': 'subtree',\n 'up-keep': '',\n 'role': 'alert',\n });\n fragment.addEventListener('up:fragment:keep', function (event) {\n if (!e.isEmpty(event.newFragment))\n event.preventDefault();\n });\n });\n return {\n config,\n hungrySteps,\n startPolling,\n stopPolling,\n pollOptions,\n };\n})();\n\n\n/***/ }),\n/* 100 */\n/***/ (() => {\n\n(function () {\n const e = up.element;\n function isRails() {\n return window.Rails ||\n window.jQuery?.rails;\n }\n for (let feature of ['method', 'confirm']) {\n const upAttribute = `up-${feature}`;\n const dataAttribute = `data-${feature}`;\n up.macro(`a[${dataAttribute}]`, function (link) {\n if (isRails() && up.link.isFollowable(link)) {\n e.setMissingAttr(link, upAttribute, link.getAttribute(dataAttribute));\n link.removeAttribute(dataAttribute);\n }\n });\n }\n})();\n\n\n/***/ })\n/******/ \t]);\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t(() => {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = (exports) => {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.\n(() => {\n__webpack_require__(1);\n__webpack_require__(2);\n__webpack_require__(3);\n__webpack_require__(4);\n__webpack_require__(5);\n__webpack_require__(6);\n__webpack_require__(7);\n__webpack_require__(9);\n__webpack_require__(10);\n__webpack_require__(11);\n__webpack_require__(12);\n__webpack_require__(13);\n__webpack_require__(14);\n__webpack_require__(15);\n__webpack_require__(16);\n__webpack_require__(17);\n__webpack_require__(18);\n__webpack_require__(19);\n__webpack_require__(20);\n__webpack_require__(21);\n__webpack_require__(22);\n__webpack_require__(23);\n__webpack_require__(24);\n__webpack_require__(25);\n__webpack_require__(26);\n__webpack_require__(27);\n__webpack_require__(28);\n__webpack_require__(29);\n__webpack_require__(30);\n__webpack_require__(31);\n__webpack_require__(32);\n__webpack_require__(33);\n__webpack_require__(34);\n__webpack_require__(35);\n__webpack_require__(36);\n__webpack_require__(37);\n__webpack_require__(38);\n__webpack_require__(39);\n__webpack_require__(40);\n__webpack_require__(41);\n__webpack_require__(42);\n__webpack_require__(43);\n__webpack_require__(44);\n__webpack_require__(45);\n__webpack_require__(46);\n__webpack_require__(47);\n__webpack_require__(48);\n__webpack_require__(49);\n__webpack_require__(50);\n__webpack_require__(51);\n__webpack_require__(52);\n__webpack_require__(53);\n__webpack_require__(54);\n__webpack_require__(55);\n__webpack_require__(56);\n__webpack_require__(57);\n__webpack_require__(58);\n__webpack_require__(59);\n__webpack_require__(60);\n__webpack_require__(61);\n__webpack_require__(62);\n__webpack_require__(63);\n__webpack_require__(64);\n__webpack_require__(65);\n__webpack_require__(66);\n__webpack_require__(67);\n__webpack_require__(68);\n__webpack_require__(69);\n__webpack_require__(70);\n__webpack_require__(71);\n__webpack_require__(72);\n__webpack_require__(73);\n__webpack_require__(74);\n__webpack_require__(75);\n__webpack_require__(76);\n__webpack_require__(77);\n__webpack_require__(78);\n__webpack_require__(79);\n__webpack_require__(80);\n__webpack_require__(81);\n__webpack_require__(82);\n__webpack_require__(83);\n__webpack_require__(84);\n__webpack_require__(85);\n__webpack_require__(86);\n__webpack_require__(88);\n__webpack_require__(90);\n__webpack_require__(91);\n__webpack_require__(93);\n__webpack_require__(95);\n__webpack_require__(97);\n__webpack_require__(98);\n__webpack_require__(99);\n__webpack_require__(100);\nup.framework.onEvaled();\n\n})();\n\n/******/ })()\n;", "export default new class Environment {\n\n get toString() {\n return document.body.getAttribute('data-environment')\n }\n\n get isTest() {\n return this.toString === 'test'\n }\n\n get isDevelopment() {\n return this.toString === 'development'\n }\n\n get isFeatureSpec() {\n return this.isTest && typeof jasmine === 'undefined'\n }\n\n}()\n", "import environment from '../util/environment'\n\nup.layer.config.overlay.dismissAriaLabel = 'Schlie\u00DFen'\n\nup.layer.config.modal.dismissable = 'button key' // do not allow closing modals by clicking the backdrop\n\nup.layer.config.modal.openAnimation = 'modal-open'\nup.layer.config.modal.closeAnimation = 'modal-close'\n\nconst modalClosedStyles = { opacity: 0, transform: 'translateY(-2rem)' }\nconst modalOpenedStyles = { opacity: 1, transform: 'translateY(0)' }\n\nup.animation('modal-open', function(element, options) {\n up.element.setStyle(element, modalClosedStyles)\n return up.animate(element, modalOpenedStyles, options)\n})\n\nup.animation('modal-close', function(element, options) {\n up.element.setStyle(element, modalOpenedStyles)\n return up.animate(element, modalClosedStyles, options)\n})\n\nup.link.config.followSelectors.push('a[href]')\nup.link.config.instantSelectors.push('a[href]')\nup.link.config.noInstantSelectors.push('.btn:not(.btn-link), [no-instant]')\n\nup.fragment.config.runScripts = false\n\nup.feedback.config.currentClasses.push('active')\n\nup.form.config.submitSelectors.push('form')\n\nup.history.config.updateMetaTags = true\n\nup.motion.config.enabled = !environment.isTest\n\nup.network.config.progressBar = true\n\nup.on('up:network:late', () => { document.body.classList.add('-loading') })\nup.on('up:network:recover', () => { document.body.classList.remove('-loading') })\n\nup.on('up:request:offline', () => { alert('Du bist offline!\\n\\nBitte versuche es nochmal, wenn du wieder online bist.') })\n", "// We don't want the attachment functionality of the trix editor.\n// Therefore we remove the attachment-button and anything related with the attachment functionality.\n\nup.on(document, 'trix-initialize', function(event) {\n const toolbarElement = event.target.toolbarElement\n const disallowedActions = ['attachFiles']\n\n // Remove attachment button\n toolbarElement.querySelectorAll('.trix-button--icon').forEach(button => {\n const action = button.getAttribute('data-trix-action')\n if (disallowedActions.includes(action)) {\n button.parentNode.remove()\n }\n })\n})\n\n// Prevents any type of file accepting (e.g. via button or dragging the file into the editor)\n// (https://github.com/basecamp/trix#storing-attached-files)\nup.on(document, 'trix-file-accept', function(event) {\n event.preventDefault()\n})\n", "/*\nTrix 2.1.6\nCopyright \u00A9 2024 37signals, LLC\n */\nvar name = \"trix\";\nvar version = \"2.1.6\";\nvar description = \"A rich text editor for everyday writing\";\nvar main = \"dist/trix.umd.min.js\";\nvar module = \"dist/trix.esm.min.js\";\nvar style = \"dist/trix.css\";\nvar files = [\n\t\"dist/*.css\",\n\t\"dist/*.js\",\n\t\"dist/*.map\",\n\t\"src/{inspector,trix}/*.js\"\n];\nvar repository = {\n\ttype: \"git\",\n\turl: \"git+https://github.com/basecamp/trix.git\"\n};\nvar keywords = [\n\t\"rich text\",\n\t\"wysiwyg\",\n\t\"editor\"\n];\nvar author = \"37signals, LLC\";\nvar license = \"MIT\";\nvar bugs = {\n\turl: \"https://github.com/basecamp/trix/issues\"\n};\nvar homepage = \"https://trix-editor.org/\";\nvar devDependencies = {\n\t\"@babel/core\": \"^7.16.0\",\n\t\"@babel/preset-env\": \"^7.16.4\",\n\t\"@rollup/plugin-babel\": \"^5.3.0\",\n\t\"@rollup/plugin-commonjs\": \"^22.0.2\",\n\t\"@rollup/plugin-json\": \"^4.1.0\",\n\t\"@rollup/plugin-node-resolve\": \"^13.3.0\",\n\t\"@web/dev-server\": \"^0.1.34\",\n\t\"babel-eslint\": \"^10.1.0\",\n\tconcurrently: \"^7.4.0\",\n\teslint: \"^7.32.0\",\n\tesm: \"^3.2.25\",\n\tkarma: \"6.4.1\",\n\t\"karma-chrome-launcher\": \"3.2.0\",\n\t\"karma-qunit\": \"^4.1.2\",\n\t\"karma-sauce-launcher\": \"^4.3.6\",\n\t\"node-sass\": \"^7.0.1\",\n\tqunit: \"2.19.1\",\n\trangy: \"^1.3.0\",\n\trollup: \"^2.56.3\",\n\t\"rollup-plugin-includepaths\": \"^0.2.4\",\n\t\"rollup-plugin-terser\": \"^7.0.2\",\n\tsvgo: \"^2.8.0\",\n\twebdriverio: \"^7.19.5\"\n};\nvar resolutions = {\n\twebdriverio: \"^7.19.5\"\n};\nvar scripts = {\n\t\"build-css\": \"node-sass --functions=./assets/trix/stylesheets/functions assets/trix.scss dist/trix.css\",\n\t\"build-js\": \"rollup -c\",\n\t\"build-assets\": \"cp -f assets/*.html dist/\",\n\tbuild: \"yarn run build-js && yarn run build-css && yarn run build-assets\",\n\twatch: \"rollup -c -w\",\n\tlint: \"eslint .\",\n\tpretest: \"yarn run lint && yarn run build\",\n\ttest: \"karma start\",\n\tprerelease: \"yarn version && yarn test\",\n\trelease: \"npm adduser && npm publish\",\n\tpostrelease: \"git push && git push --tags\",\n\tdev: \"web-dev-server --app-index index.html --root-dir dist --node-resolve --open\",\n\tstart: \"yarn build-assets && concurrently --kill-others --names js,css,dev-server 'yarn watch' 'yarn build-css --watch' 'yarn dev'\"\n};\nvar _package = {\n\tname: name,\n\tversion: version,\n\tdescription: description,\n\tmain: main,\n\tmodule: module,\n\tstyle: style,\n\tfiles: files,\n\trepository: repository,\n\tkeywords: keywords,\n\tauthor: author,\n\tlicense: license,\n\tbugs: bugs,\n\thomepage: homepage,\n\tdevDependencies: devDependencies,\n\tresolutions: resolutions,\n\tscripts: scripts\n};\n\nconst attachmentSelector = \"[data-trix-attachment]\";\nconst attachments = {\n preview: {\n presentation: \"gallery\",\n caption: {\n name: true,\n size: true\n }\n },\n file: {\n caption: {\n size: true\n }\n }\n};\n\nconst attributes = {\n default: {\n tagName: \"div\",\n parse: false\n },\n quote: {\n tagName: \"blockquote\",\n nestable: true\n },\n heading1: {\n tagName: \"h1\",\n terminal: true,\n breakOnReturn: true,\n group: false\n },\n code: {\n tagName: \"pre\",\n terminal: true,\n htmlAttributes: [\"language\"],\n text: {\n plaintext: true\n }\n },\n bulletList: {\n tagName: \"ul\",\n parse: false\n },\n bullet: {\n tagName: \"li\",\n listAttribute: \"bulletList\",\n group: false,\n nestable: true,\n test(element) {\n return tagName$1(element.parentNode) === attributes[this.listAttribute].tagName;\n }\n },\n numberList: {\n tagName: \"ol\",\n parse: false\n },\n number: {\n tagName: \"li\",\n listAttribute: \"numberList\",\n group: false,\n nestable: true,\n test(element) {\n return tagName$1(element.parentNode) === attributes[this.listAttribute].tagName;\n }\n },\n attachmentGallery: {\n tagName: \"div\",\n exclusive: true,\n terminal: true,\n parse: false,\n group: false\n }\n};\nconst tagName$1 = element => {\n var _element$tagName;\n return element === null || element === void 0 || (_element$tagName = element.tagName) === null || _element$tagName === void 0 ? void 0 : _element$tagName.toLowerCase();\n};\n\nconst androidVersionMatch = navigator.userAgent.match(/android\\s([0-9]+.*Chrome)/i);\nconst androidVersion = androidVersionMatch && parseInt(androidVersionMatch[1]);\nvar browser$1 = {\n // Android emits composition events when moving the cursor through existing text\n // Introduced in Chrome 65: https://bugs.chromium.org/p/chromium/issues/detail?id=764439#c9\n composesExistingText: /Android.*Chrome/.test(navigator.userAgent),\n // Android 13, especially on Samsung keyboards, emits extra compositionend and beforeinput events\n // that can make the input handler lose the current selection or enter an infinite input -> render -> input\n // loop.\n recentAndroid: androidVersion && androidVersion > 12,\n samsungAndroid: androidVersion && navigator.userAgent.match(/Android.*SM-/),\n // IE 11 activates resizing handles on editable elements that have \"layout\"\n forcesObjectResizing: /Trident.*rv:11/.test(navigator.userAgent),\n // https://www.w3.org/TR/input-events-1/ + https://www.w3.org/TR/input-events-2/\n supportsInputEvents: typeof InputEvent !== \"undefined\" && [\"data\", \"getTargetRanges\", \"inputType\"].every(prop => prop in InputEvent.prototype)\n};\n\nvar css$3 = {\n attachment: \"attachment\",\n attachmentCaption: \"attachment__caption\",\n attachmentCaptionEditor: \"attachment__caption-editor\",\n attachmentMetadata: \"attachment__metadata\",\n attachmentMetadataContainer: \"attachment__metadata-container\",\n attachmentName: \"attachment__name\",\n attachmentProgress: \"attachment__progress\",\n attachmentSize: \"attachment__size\",\n attachmentToolbar: \"attachment__toolbar\",\n attachmentGallery: \"attachment-gallery\"\n};\n\nvar lang$1 = {\n attachFiles: \"Attach Files\",\n bold: \"Bold\",\n bullets: \"Bullets\",\n byte: \"Byte\",\n bytes: \"Bytes\",\n captionPlaceholder: \"Add a caption\u2026\",\n code: \"Code\",\n heading1: \"Heading\",\n indent: \"Increase Level\",\n italic: \"Italic\",\n link: \"Link\",\n numbers: \"Numbers\",\n outdent: \"Decrease Level\",\n quote: \"Quote\",\n redo: \"Redo\",\n remove: \"Remove\",\n strike: \"Strikethrough\",\n undo: \"Undo\",\n unlink: \"Unlink\",\n url: \"URL\",\n urlPlaceholder: \"Enter a URL\u2026\",\n GB: \"GB\",\n KB: \"KB\",\n MB: \"MB\",\n PB: \"PB\",\n TB: \"TB\"\n};\n\n/* eslint-disable\n no-case-declarations,\n*/\nconst sizes = [lang$1.bytes, lang$1.KB, lang$1.MB, lang$1.GB, lang$1.TB, lang$1.PB];\nvar file_size_formatting = {\n prefix: \"IEC\",\n precision: 2,\n formatter(number) {\n switch (number) {\n case 0:\n return \"0 \".concat(lang$1.bytes);\n case 1:\n return \"1 \".concat(lang$1.byte);\n default:\n let base;\n if (this.prefix === \"SI\") {\n base = 1000;\n } else if (this.prefix === \"IEC\") {\n base = 1024;\n }\n const exp = Math.floor(Math.log(number) / Math.log(base));\n const humanSize = number / Math.pow(base, exp);\n const string = humanSize.toFixed(this.precision);\n const withoutInsignificantZeros = string.replace(/0*$/, \"\").replace(/\\.$/, \"\");\n return \"\".concat(withoutInsignificantZeros, \" \").concat(sizes[exp]);\n }\n }\n};\n\nconst ZERO_WIDTH_SPACE = \"\\uFEFF\";\nconst NON_BREAKING_SPACE = \"\\u00A0\";\nconst OBJECT_REPLACEMENT_CHARACTER = \"\\uFFFC\";\n\nconst extend = function (properties) {\n for (const key in properties) {\n const value = properties[key];\n this[key] = value;\n }\n return this;\n};\n\nconst html = document.documentElement;\nconst match = html.matches;\nconst handleEvent = function (eventName) {\n let {\n onElement,\n matchingSelector,\n withCallback,\n inPhase,\n preventDefault,\n times\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const element = onElement ? onElement : html;\n const selector = matchingSelector;\n const useCapture = inPhase === \"capturing\";\n const handler = function (event) {\n if (times != null && --times === 0) {\n handler.destroy();\n }\n const target = findClosestElementFromNode(event.target, {\n matchingSelector: selector\n });\n if (target != null) {\n withCallback === null || withCallback === void 0 || withCallback.call(target, event, target);\n if (preventDefault) {\n event.preventDefault();\n }\n }\n };\n handler.destroy = () => element.removeEventListener(eventName, handler, useCapture);\n element.addEventListener(eventName, handler, useCapture);\n return handler;\n};\nconst handleEventOnce = function (eventName) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n options.times = 1;\n return handleEvent(eventName, options);\n};\nconst triggerEvent = function (eventName) {\n let {\n onElement,\n bubbles,\n cancelable,\n attributes\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const element = onElement != null ? onElement : html;\n bubbles = bubbles !== false;\n cancelable = cancelable !== false;\n const event = document.createEvent(\"Events\");\n event.initEvent(eventName, bubbles, cancelable);\n if (attributes != null) {\n extend.call(event, attributes);\n }\n return element.dispatchEvent(event);\n};\nconst elementMatchesSelector = function (element, selector) {\n if ((element === null || element === void 0 ? void 0 : element.nodeType) === 1) {\n return match.call(element, selector);\n }\n};\nconst findClosestElementFromNode = function (node) {\n let {\n matchingSelector,\n untilNode\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n while (node && node.nodeType !== Node.ELEMENT_NODE) {\n node = node.parentNode;\n }\n if (node == null) {\n return;\n }\n if (matchingSelector != null) {\n if (node.closest && untilNode == null) {\n return node.closest(matchingSelector);\n } else {\n while (node && node !== untilNode) {\n if (elementMatchesSelector(node, matchingSelector)) {\n return node;\n }\n node = node.parentNode;\n }\n }\n } else {\n return node;\n }\n};\nconst findInnerElement = function (element) {\n while ((_element = element) !== null && _element !== void 0 && _element.firstElementChild) {\n var _element;\n element = element.firstElementChild;\n }\n return element;\n};\nconst innerElementIsActive = element => document.activeElement !== element && elementContainsNode(element, document.activeElement);\nconst elementContainsNode = function (element, node) {\n if (!element || !node) {\n return;\n }\n while (node) {\n if (node === element) {\n return true;\n }\n node = node.parentNode;\n }\n};\nconst findNodeFromContainerAndOffset = function (container, offset) {\n if (!container) {\n return;\n }\n if (container.nodeType === Node.TEXT_NODE) {\n return container;\n } else if (offset === 0) {\n return container.firstChild != null ? container.firstChild : container;\n } else {\n return container.childNodes.item(offset - 1);\n }\n};\nconst findElementFromContainerAndOffset = function (container, offset) {\n const node = findNodeFromContainerAndOffset(container, offset);\n return findClosestElementFromNode(node);\n};\nconst findChildIndexOfNode = function (node) {\n var _node;\n if (!((_node = node) !== null && _node !== void 0 && _node.parentNode)) {\n return;\n }\n let childIndex = 0;\n node = node.previousSibling;\n while (node) {\n childIndex++;\n node = node.previousSibling;\n }\n return childIndex;\n};\nconst removeNode = node => {\n var _node$parentNode;\n return node === null || node === void 0 || (_node$parentNode = node.parentNode) === null || _node$parentNode === void 0 ? void 0 : _node$parentNode.removeChild(node);\n};\nconst walkTree = function (tree) {\n let {\n onlyNodesOfType,\n usingFilter,\n expandEntityReferences\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const whatToShow = (() => {\n switch (onlyNodesOfType) {\n case \"element\":\n return NodeFilter.SHOW_ELEMENT;\n case \"text\":\n return NodeFilter.SHOW_TEXT;\n case \"comment\":\n return NodeFilter.SHOW_COMMENT;\n default:\n return NodeFilter.SHOW_ALL;\n }\n })();\n return document.createTreeWalker(tree, whatToShow, usingFilter != null ? usingFilter : null, expandEntityReferences === true);\n};\nconst tagName = element => {\n var _element$tagName;\n return element === null || element === void 0 || (_element$tagName = element.tagName) === null || _element$tagName === void 0 ? void 0 : _element$tagName.toLowerCase();\n};\nconst makeElement = function (tag) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let key, value;\n if (typeof tag === \"object\") {\n options = tag;\n tag = options.tagName;\n } else {\n options = {\n attributes: options\n };\n }\n const element = document.createElement(tag);\n if (options.editable != null) {\n if (options.attributes == null) {\n options.attributes = {};\n }\n options.attributes.contenteditable = options.editable;\n }\n if (options.attributes) {\n for (key in options.attributes) {\n value = options.attributes[key];\n element.setAttribute(key, value);\n }\n }\n if (options.style) {\n for (key in options.style) {\n value = options.style[key];\n element.style[key] = value;\n }\n }\n if (options.data) {\n for (key in options.data) {\n value = options.data[key];\n element.dataset[key] = value;\n }\n }\n if (options.className) {\n options.className.split(\" \").forEach(className => {\n element.classList.add(className);\n });\n }\n if (options.textContent) {\n element.textContent = options.textContent;\n }\n if (options.childNodes) {\n [].concat(options.childNodes).forEach(childNode => {\n element.appendChild(childNode);\n });\n }\n return element;\n};\nlet blockTagNames = undefined;\nconst getBlockTagNames = function () {\n if (blockTagNames != null) {\n return blockTagNames;\n }\n blockTagNames = [];\n for (const key in attributes) {\n const attributes$1 = attributes[key];\n if (attributes$1.tagName) {\n blockTagNames.push(attributes$1.tagName);\n }\n }\n return blockTagNames;\n};\nconst nodeIsBlockContainer = node => nodeIsBlockStartComment(node === null || node === void 0 ? void 0 : node.firstChild);\nconst nodeProbablyIsBlockContainer = function (node) {\n return getBlockTagNames().includes(tagName(node)) && !getBlockTagNames().includes(tagName(node.firstChild));\n};\nconst nodeIsBlockStart = function (node) {\n let {\n strict\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n strict: true\n };\n if (strict) {\n return nodeIsBlockStartComment(node);\n } else {\n return nodeIsBlockStartComment(node) || !nodeIsBlockStartComment(node.firstChild) && nodeProbablyIsBlockContainer(node);\n }\n};\nconst nodeIsBlockStartComment = node => nodeIsCommentNode(node) && (node === null || node === void 0 ? void 0 : node.data) === \"block\";\nconst nodeIsCommentNode = node => (node === null || node === void 0 ? void 0 : node.nodeType) === Node.COMMENT_NODE;\nconst nodeIsCursorTarget = function (node) {\n let {\n name\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!node) {\n return;\n }\n if (nodeIsTextNode(node)) {\n if (node.data === ZERO_WIDTH_SPACE) {\n if (name) {\n return node.parentNode.dataset.trixCursorTarget === name;\n } else {\n return true;\n }\n }\n } else {\n return nodeIsCursorTarget(node.firstChild);\n }\n};\nconst nodeIsAttachmentElement = node => elementMatchesSelector(node, attachmentSelector);\nconst nodeIsEmptyTextNode = node => nodeIsTextNode(node) && (node === null || node === void 0 ? void 0 : node.data) === \"\";\nconst nodeIsTextNode = node => (node === null || node === void 0 ? void 0 : node.nodeType) === Node.TEXT_NODE;\n\nconst input = {\n level2Enabled: true,\n getLevel() {\n if (this.level2Enabled && browser$1.supportsInputEvents) {\n return 2;\n } else {\n return 0;\n }\n },\n pickFiles(callback) {\n const input = makeElement(\"input\", {\n type: \"file\",\n multiple: true,\n hidden: true,\n id: this.fileInputId\n });\n input.addEventListener(\"change\", () => {\n callback(input.files);\n removeNode(input);\n });\n removeNode(document.getElementById(this.fileInputId));\n document.body.appendChild(input);\n input.click();\n }\n};\n\nvar key_names = {\n 8: \"backspace\",\n 9: \"tab\",\n 13: \"return\",\n 27: \"escape\",\n 37: \"left\",\n 39: \"right\",\n 46: \"delete\",\n 68: \"d\",\n 72: \"h\",\n 79: \"o\"\n};\n\nvar parser = {\n removeBlankTableCells: false,\n tableCellSeparator: \" | \",\n tableRowSeparator: \"\\n\"\n};\n\nvar text_attributes = {\n bold: {\n tagName: \"strong\",\n inheritable: true,\n parser(element) {\n const style = window.getComputedStyle(element);\n return style.fontWeight === \"bold\" || style.fontWeight >= 600;\n }\n },\n italic: {\n tagName: \"em\",\n inheritable: true,\n parser(element) {\n const style = window.getComputedStyle(element);\n return style.fontStyle === \"italic\";\n }\n },\n href: {\n groupTagName: \"a\",\n parser(element) {\n const matchingSelector = \"a:not(\".concat(attachmentSelector, \")\");\n const link = element.closest(matchingSelector);\n if (link) {\n return link.getAttribute(\"href\");\n }\n }\n },\n strike: {\n tagName: \"del\",\n inheritable: true\n },\n frozen: {\n style: {\n backgroundColor: \"highlight\"\n }\n }\n};\n\nvar toolbar = {\n getDefaultHTML() {\n return \"
\\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n\\n \\n\\n \\n \\n \\n \\n
\\n\\n
\\n
\\n \\n
\\n
\");\n }\n};\n\nconst undo = {\n interval: 5000\n};\n\nvar config = /*#__PURE__*/Object.freeze({\n __proto__: null,\n attachments: attachments,\n blockAttributes: attributes,\n browser: browser$1,\n css: css$3,\n fileSize: file_size_formatting,\n input: input,\n keyNames: key_names,\n lang: lang$1,\n parser: parser,\n textAttributes: text_attributes,\n toolbar: toolbar,\n undo: undo\n});\n\nclass BasicObject {\n static proxyMethod(expression) {\n const {\n name,\n toMethod,\n toProperty,\n optional\n } = parseProxyMethodExpression(expression);\n this.prototype[name] = function () {\n let subject;\n let object;\n if (toMethod) {\n if (optional) {\n var _this$toMethod;\n object = (_this$toMethod = this[toMethod]) === null || _this$toMethod === void 0 ? void 0 : _this$toMethod.call(this);\n } else {\n object = this[toMethod]();\n }\n } else if (toProperty) {\n object = this[toProperty];\n }\n if (optional) {\n var _object;\n subject = (_object = object) === null || _object === void 0 ? void 0 : _object[name];\n if (subject) {\n return apply.call(subject, object, arguments);\n }\n } else {\n subject = object[name];\n return apply.call(subject, object, arguments);\n }\n };\n }\n}\nconst parseProxyMethodExpression = function (expression) {\n const match = expression.match(proxyMethodExpressionPattern);\n if (!match) {\n throw new Error(\"can't parse @proxyMethod expression: \".concat(expression));\n }\n const args = {\n name: match[4]\n };\n if (match[2] != null) {\n args.toMethod = match[1];\n } else {\n args.toProperty = match[1];\n }\n if (match[3] != null) {\n args.optional = true;\n }\n return args;\n};\nconst {\n apply\n} = Function.prototype;\nconst proxyMethodExpressionPattern = new RegExp(\"\\\n^\\\n(.+?)\\\n(\\\\(\\\\))?\\\n(\\\\?)?\\\n\\\\.\\\n(.+?)\\\n$\\\n\");\n\nvar _Array$from, _$codePointAt$1, _$1, _String$fromCodePoint;\nclass UTF16String extends BasicObject {\n static box() {\n let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n if (value instanceof this) {\n return value;\n } else {\n return this.fromUCS2String(value === null || value === void 0 ? void 0 : value.toString());\n }\n }\n static fromUCS2String(ucs2String) {\n return new this(ucs2String, ucs2decode(ucs2String));\n }\n static fromCodepoints(codepoints) {\n return new this(ucs2encode(codepoints), codepoints);\n }\n constructor(ucs2String, codepoints) {\n super(...arguments);\n this.ucs2String = ucs2String;\n this.codepoints = codepoints;\n this.length = this.codepoints.length;\n this.ucs2Length = this.ucs2String.length;\n }\n offsetToUCS2Offset(offset) {\n return ucs2encode(this.codepoints.slice(0, Math.max(0, offset))).length;\n }\n offsetFromUCS2Offset(ucs2Offset) {\n return ucs2decode(this.ucs2String.slice(0, Math.max(0, ucs2Offset))).length;\n }\n slice() {\n return this.constructor.fromCodepoints(this.codepoints.slice(...arguments));\n }\n charAt(offset) {\n return this.slice(offset, offset + 1);\n }\n isEqualTo(value) {\n return this.constructor.box(value).ucs2String === this.ucs2String;\n }\n toJSON() {\n return this.ucs2String;\n }\n getCacheKey() {\n return this.ucs2String;\n }\n toString() {\n return this.ucs2String;\n }\n}\nconst hasArrayFrom = ((_Array$from = Array.from) === null || _Array$from === void 0 ? void 0 : _Array$from.call(Array, \"\\ud83d\\udc7c\").length) === 1;\nconst hasStringCodePointAt$1 = ((_$codePointAt$1 = (_$1 = \" \").codePointAt) === null || _$codePointAt$1 === void 0 ? void 0 : _$codePointAt$1.call(_$1, 0)) != null;\nconst hasStringFromCodePoint = ((_String$fromCodePoint = String.fromCodePoint) === null || _String$fromCodePoint === void 0 ? void 0 : _String$fromCodePoint.call(String, 32, 128124)) === \" \\ud83d\\udc7c\";\n\n// UCS-2 conversion helpers ported from Mathias Bynens' Punycode.js:\n// https://github.com/bestiejs/punycode.js#punycodeucs2\n\nlet ucs2decode, ucs2encode;\n\n// Creates an array containing the numeric code points of each Unicode\n// character in the string. While JavaScript uses UCS-2 internally,\n// this function will convert a pair of surrogate halves (each of which\n// UCS-2 exposes as separate characters) into a single code point,\n// matching UTF-16.\nif (hasArrayFrom && hasStringCodePointAt$1) {\n ucs2decode = string => Array.from(string).map(char => char.codePointAt(0));\n} else {\n ucs2decode = function (string) {\n const output = [];\n let counter = 0;\n const {\n length\n } = string;\n while (counter < length) {\n let value = string.charCodeAt(counter++);\n if (0xd800 <= value && value <= 0xdbff && counter < length) {\n // high surrogate, and there is a next character\n const extra = string.charCodeAt(counter++);\n if ((extra & 0xfc00) === 0xdc00) {\n // low surrogate\n value = ((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000;\n } else {\n // unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair\n counter--;\n }\n }\n output.push(value);\n }\n return output;\n };\n}\n\n// Creates a string based on an array of numeric code points.\nif (hasStringFromCodePoint) {\n ucs2encode = array => String.fromCodePoint(...Array.from(array || []));\n} else {\n ucs2encode = function (array) {\n const characters = (() => {\n const result = [];\n Array.from(array).forEach(value => {\n let output = \"\";\n if (value > 0xffff) {\n value -= 0x10000;\n output += String.fromCharCode(value >>> 10 & 0x3ff | 0xd800);\n value = 0xdc00 | value & 0x3ff;\n }\n result.push(output + String.fromCharCode(value));\n });\n return result;\n })();\n return characters.join(\"\");\n };\n}\n\nlet id$2 = 0;\nclass TrixObject extends BasicObject {\n static fromJSONString(jsonString) {\n return this.fromJSON(JSON.parse(jsonString));\n }\n constructor() {\n super(...arguments);\n this.id = ++id$2;\n }\n hasSameConstructorAs(object) {\n return this.constructor === (object === null || object === void 0 ? void 0 : object.constructor);\n }\n isEqualTo(object) {\n return this === object;\n }\n inspect() {\n const parts = [];\n const contents = this.contentsForInspection() || {};\n for (const key in contents) {\n const value = contents[key];\n parts.push(\"\".concat(key, \"=\").concat(value));\n }\n return \"#<\".concat(this.constructor.name, \":\").concat(this.id).concat(parts.length ? \" \".concat(parts.join(\", \")) : \"\", \">\");\n }\n contentsForInspection() {}\n toJSONString() {\n return JSON.stringify(this);\n }\n toUTF16String() {\n return UTF16String.box(this);\n }\n getCacheKey() {\n return this.id.toString();\n }\n}\n\n/* eslint-disable\n id-length,\n*/\nconst arraysAreEqual = function () {\n let a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n if (a.length !== b.length) {\n return false;\n }\n for (let index = 0; index < a.length; index++) {\n const value = a[index];\n if (value !== b[index]) {\n return false;\n }\n }\n return true;\n};\nconst arrayStartsWith = function () {\n let a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return arraysAreEqual(a.slice(0, b.length), b);\n};\nconst spliceArray = function (array) {\n const result = array.slice(0);\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n result.splice(...args);\n return result;\n};\nconst summarizeArrayChange = function () {\n let oldArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let newArray = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n const added = [];\n const removed = [];\n const existingValues = new Set();\n oldArray.forEach(value => {\n existingValues.add(value);\n });\n const currentValues = new Set();\n newArray.forEach(value => {\n currentValues.add(value);\n if (!existingValues.has(value)) {\n added.push(value);\n }\n });\n oldArray.forEach(value => {\n if (!currentValues.has(value)) {\n removed.push(value);\n }\n });\n return {\n added,\n removed\n };\n};\n\n// https://github.com/mathiasbynens/unicode-2.1.8/blob/master/Bidi_Class/Right_To_Left/regex.js\nconst RTL_PATTERN = /[\\u05BE\\u05C0\\u05C3\\u05D0-\\u05EA\\u05F0-\\u05F4\\u061B\\u061F\\u0621-\\u063A\\u0640-\\u064A\\u066D\\u0671-\\u06B7\\u06BA-\\u06BE\\u06C0-\\u06CE\\u06D0-\\u06D5\\u06E5\\u06E6\\u200F\\u202B\\u202E\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE72\\uFE74\\uFE76-\\uFEFC]/;\nconst getDirection = function () {\n const input = makeElement(\"input\", {\n dir: \"auto\",\n name: \"x\",\n dirName: \"x.dir\"\n });\n const textArea = makeElement(\"textarea\", {\n dir: \"auto\",\n name: \"y\",\n dirName: \"y.dir\"\n });\n const form = makeElement(\"form\");\n form.appendChild(input);\n form.appendChild(textArea);\n const supportsDirName = function () {\n try {\n return new FormData(form).has(textArea.dirName);\n } catch (error) {\n return false;\n }\n }();\n const supportsDirSelector = function () {\n try {\n return input.matches(\":dir(ltr),:dir(rtl)\");\n } catch (error) {\n return false;\n }\n }();\n if (supportsDirName) {\n return function (string) {\n textArea.value = string;\n return new FormData(form).get(textArea.dirName);\n };\n } else if (supportsDirSelector) {\n return function (string) {\n input.value = string;\n if (input.matches(\":dir(rtl)\")) {\n return \"rtl\";\n } else {\n return \"ltr\";\n }\n };\n } else {\n return function (string) {\n const char = string.trim().charAt(0);\n if (RTL_PATTERN.test(char)) {\n return \"rtl\";\n } else {\n return \"ltr\";\n }\n };\n }\n}();\n\nlet allAttributeNames = null;\nlet blockAttributeNames = null;\nlet textAttributeNames = null;\nlet listAttributeNames = null;\nconst getAllAttributeNames = () => {\n if (!allAttributeNames) {\n allAttributeNames = getTextAttributeNames().concat(getBlockAttributeNames());\n }\n return allAttributeNames;\n};\nconst getBlockConfig = attributeName => attributes[attributeName];\nconst getBlockAttributeNames = () => {\n if (!blockAttributeNames) {\n blockAttributeNames = Object.keys(attributes);\n }\n return blockAttributeNames;\n};\nconst getTextConfig = attributeName => text_attributes[attributeName];\nconst getTextAttributeNames = () => {\n if (!textAttributeNames) {\n textAttributeNames = Object.keys(text_attributes);\n }\n return textAttributeNames;\n};\nconst getListAttributeNames = () => {\n if (!listAttributeNames) {\n listAttributeNames = [];\n for (const key in attributes) {\n const {\n listAttribute\n } = attributes[key];\n if (listAttribute != null) {\n listAttributeNames.push(listAttribute);\n }\n }\n }\n return listAttributeNames;\n};\n\n/* eslint-disable\n*/\nconst installDefaultCSSForTagName = function (tagName, defaultCSS) {\n const styleElement = insertStyleElementForTagName(tagName);\n styleElement.textContent = defaultCSS.replace(/%t/g, tagName);\n};\nconst insertStyleElementForTagName = function (tagName) {\n const element = document.createElement(\"style\");\n element.setAttribute(\"type\", \"text/css\");\n element.setAttribute(\"data-tag-name\", tagName.toLowerCase());\n const nonce = getCSPNonce();\n if (nonce) {\n element.setAttribute(\"nonce\", nonce);\n }\n document.head.insertBefore(element, document.head.firstChild);\n return element;\n};\nconst getCSPNonce = function () {\n const element = getMetaElement(\"trix-csp-nonce\") || getMetaElement(\"csp-nonce\");\n if (element) {\n return element.getAttribute(\"content\");\n }\n};\nconst getMetaElement = name => document.head.querySelector(\"meta[name=\".concat(name, \"]\"));\n\nconst testTransferData = {\n \"application/x-trix-feature-detection\": \"test\"\n};\nconst dataTransferIsPlainText = function (dataTransfer) {\n const text = dataTransfer.getData(\"text/plain\");\n const html = dataTransfer.getData(\"text/html\");\n if (text && html) {\n const {\n body\n } = new DOMParser().parseFromString(html, \"text/html\");\n if (body.textContent === text) {\n return !body.querySelector(\"*\");\n }\n } else {\n return text === null || text === void 0 ? void 0 : text.length;\n }\n};\nconst dataTransferIsMsOfficePaste = _ref => {\n let {\n dataTransfer\n } = _ref;\n return dataTransfer.types.includes(\"Files\") && dataTransfer.types.includes(\"text/html\") && dataTransfer.getData(\"text/html\").includes(\"urn:schemas-microsoft-com:office:office\");\n};\nconst dataTransferIsWritable = function (dataTransfer) {\n if (!(dataTransfer !== null && dataTransfer !== void 0 && dataTransfer.setData)) return false;\n for (const key in testTransferData) {\n const value = testTransferData[key];\n try {\n dataTransfer.setData(key, value);\n if (!dataTransfer.getData(key) === value) return false;\n } catch (error) {\n return false;\n }\n }\n return true;\n};\nconst keyEventIsKeyboardCommand = function () {\n if (/Mac|^iP/.test(navigator.platform)) {\n return event => event.metaKey;\n } else {\n return event => event.ctrlKey;\n }\n}();\n\nconst defer = fn => setTimeout(fn, 1);\n\n/* eslint-disable\n id-length,\n*/\nconst copyObject = function () {\n let object = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const result = {};\n for (const key in object) {\n const value = object[key];\n result[key] = value;\n }\n return result;\n};\nconst objectsAreEqual = function () {\n let a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (Object.keys(a).length !== Object.keys(b).length) {\n return false;\n }\n for (const key in a) {\n const value = a[key];\n if (value !== b[key]) {\n return false;\n }\n }\n return true;\n};\n\nconst normalizeRange = function (range) {\n if (range == null) return;\n if (!Array.isArray(range)) {\n range = [range, range];\n }\n return [copyValue(range[0]), copyValue(range[1] != null ? range[1] : range[0])];\n};\nconst rangeIsCollapsed = function (range) {\n if (range == null) return;\n const [start, end] = normalizeRange(range);\n return rangeValuesAreEqual(start, end);\n};\nconst rangesAreEqual = function (leftRange, rightRange) {\n if (leftRange == null || rightRange == null) return;\n const [leftStart, leftEnd] = normalizeRange(leftRange);\n const [rightStart, rightEnd] = normalizeRange(rightRange);\n return rangeValuesAreEqual(leftStart, rightStart) && rangeValuesAreEqual(leftEnd, rightEnd);\n};\nconst copyValue = function (value) {\n if (typeof value === \"number\") {\n return value;\n } else {\n return copyObject(value);\n }\n};\nconst rangeValuesAreEqual = function (left, right) {\n if (typeof left === \"number\") {\n return left === right;\n } else {\n return objectsAreEqual(left, right);\n }\n};\n\nclass SelectionChangeObserver extends BasicObject {\n constructor() {\n super(...arguments);\n this.update = this.update.bind(this);\n this.selectionManagers = [];\n }\n start() {\n if (!this.started) {\n this.started = true;\n document.addEventListener(\"selectionchange\", this.update, true);\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n return document.removeEventListener(\"selectionchange\", this.update, true);\n }\n }\n registerSelectionManager(selectionManager) {\n if (!this.selectionManagers.includes(selectionManager)) {\n this.selectionManagers.push(selectionManager);\n return this.start();\n }\n }\n unregisterSelectionManager(selectionManager) {\n this.selectionManagers = this.selectionManagers.filter(sm => sm !== selectionManager);\n if (this.selectionManagers.length === 0) {\n return this.stop();\n }\n }\n notifySelectionManagersOfSelectionChange() {\n return this.selectionManagers.map(selectionManager => selectionManager.selectionDidChange());\n }\n update() {\n this.notifySelectionManagersOfSelectionChange();\n }\n reset() {\n this.update();\n }\n}\nconst selectionChangeObserver = new SelectionChangeObserver();\nconst getDOMSelection = function () {\n const selection = window.getSelection();\n if (selection.rangeCount > 0) {\n return selection;\n }\n};\nconst getDOMRange = function () {\n var _getDOMSelection;\n const domRange = (_getDOMSelection = getDOMSelection()) === null || _getDOMSelection === void 0 ? void 0 : _getDOMSelection.getRangeAt(0);\n if (domRange) {\n if (!domRangeIsPrivate(domRange)) {\n return domRange;\n }\n }\n};\nconst setDOMRange = function (domRange) {\n const selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(domRange);\n return selectionChangeObserver.update();\n};\n\n// In Firefox, clicking certain elements changes the selection to a\n// private element used to draw its UI. Attempting to access properties of those\n// elements throws an error.\n// https://bugzilla.mozilla.org/show_bug.cgi?id=208427\nconst domRangeIsPrivate = domRange => nodeIsPrivate(domRange.startContainer) || nodeIsPrivate(domRange.endContainer);\nconst nodeIsPrivate = node => !Object.getPrototypeOf(node);\n\n/* eslint-disable\n id-length,\n no-useless-escape,\n*/\nconst normalizeSpaces = string => string.replace(new RegExp(\"\".concat(ZERO_WIDTH_SPACE), \"g\"), \"\").replace(new RegExp(\"\".concat(NON_BREAKING_SPACE), \"g\"), \" \");\nconst normalizeNewlines = string => string.replace(/\\r\\n?/g, \"\\n\");\nconst breakableWhitespacePattern = new RegExp(\"[^\\\\S\".concat(NON_BREAKING_SPACE, \"]\"));\nconst squishBreakableWhitespace = string => string\n// Replace all breakable whitespace characters with a space\n.replace(new RegExp(\"\".concat(breakableWhitespacePattern.source), \"g\"), \" \")\n// Replace two or more spaces with a single space\n.replace(/\\ {2,}/g, \" \");\nconst summarizeStringChange = function (oldString, newString) {\n let added, removed;\n oldString = UTF16String.box(oldString);\n newString = UTF16String.box(newString);\n if (newString.length < oldString.length) {\n [removed, added] = utf16StringDifferences(oldString, newString);\n } else {\n [added, removed] = utf16StringDifferences(newString, oldString);\n }\n return {\n added,\n removed\n };\n};\nconst utf16StringDifferences = function (a, b) {\n if (a.isEqualTo(b)) {\n return [\"\", \"\"];\n }\n const diffA = utf16StringDifference(a, b);\n const {\n length\n } = diffA.utf16String;\n let diffB;\n if (length) {\n const {\n offset\n } = diffA;\n const codepoints = a.codepoints.slice(0, offset).concat(a.codepoints.slice(offset + length));\n diffB = utf16StringDifference(b, UTF16String.fromCodepoints(codepoints));\n } else {\n diffB = utf16StringDifference(b, a);\n }\n return [diffA.utf16String.toString(), diffB.utf16String.toString()];\n};\nconst utf16StringDifference = function (a, b) {\n let leftIndex = 0;\n let rightIndexA = a.length;\n let rightIndexB = b.length;\n while (leftIndex < rightIndexA && a.charAt(leftIndex).isEqualTo(b.charAt(leftIndex))) {\n leftIndex++;\n }\n while (rightIndexA > leftIndex + 1 && a.charAt(rightIndexA - 1).isEqualTo(b.charAt(rightIndexB - 1))) {\n rightIndexA--;\n rightIndexB--;\n }\n return {\n utf16String: a.slice(leftIndex, rightIndexA),\n offset: leftIndex\n };\n};\n\nclass Hash extends TrixObject {\n static fromCommonAttributesOfObjects() {\n let objects = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n if (!objects.length) {\n return new this();\n }\n let hash = box(objects[0]);\n let keys = hash.getKeys();\n objects.slice(1).forEach(object => {\n keys = hash.getKeysCommonToHash(box(object));\n hash = hash.slice(keys);\n });\n return hash;\n }\n static box(values) {\n return box(values);\n }\n constructor() {\n let values = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n super(...arguments);\n this.values = copy(values);\n }\n add(key, value) {\n return this.merge(object(key, value));\n }\n remove(key) {\n return new Hash(copy(this.values, key));\n }\n get(key) {\n return this.values[key];\n }\n has(key) {\n return key in this.values;\n }\n merge(values) {\n return new Hash(merge(this.values, unbox(values)));\n }\n slice(keys) {\n const values = {};\n Array.from(keys).forEach(key => {\n if (this.has(key)) {\n values[key] = this.values[key];\n }\n });\n return new Hash(values);\n }\n getKeys() {\n return Object.keys(this.values);\n }\n getKeysCommonToHash(hash) {\n hash = box(hash);\n return this.getKeys().filter(key => this.values[key] === hash.values[key]);\n }\n isEqualTo(values) {\n return arraysAreEqual(this.toArray(), box(values).toArray());\n }\n isEmpty() {\n return this.getKeys().length === 0;\n }\n toArray() {\n if (!this.array) {\n const result = [];\n for (const key in this.values) {\n const value = this.values[key];\n result.push(result.push(key, value));\n }\n this.array = result.slice(0);\n }\n return this.array;\n }\n toObject() {\n return copy(this.values);\n }\n toJSON() {\n return this.toObject();\n }\n contentsForInspection() {\n return {\n values: JSON.stringify(this.values)\n };\n }\n}\nconst object = function (key, value) {\n const result = {};\n result[key] = value;\n return result;\n};\nconst merge = function (object, values) {\n const result = copy(object);\n for (const key in values) {\n const value = values[key];\n result[key] = value;\n }\n return result;\n};\nconst copy = function (object, keyToRemove) {\n const result = {};\n const sortedKeys = Object.keys(object).sort();\n sortedKeys.forEach(key => {\n if (key !== keyToRemove) {\n result[key] = object[key];\n }\n });\n return result;\n};\nconst box = function (object) {\n if (object instanceof Hash) {\n return object;\n } else {\n return new Hash(object);\n }\n};\nconst unbox = function (object) {\n if (object instanceof Hash) {\n return object.values;\n } else {\n return object;\n }\n};\n\nclass ObjectGroup {\n static groupObjects() {\n let ungroupedObjects = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let {\n depth,\n asTree\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let group;\n if (asTree) {\n if (depth == null) {\n depth = 0;\n }\n }\n const objects = [];\n Array.from(ungroupedObjects).forEach(object => {\n var _object$canBeGrouped2;\n if (group) {\n var _object$canBeGrouped, _group$canBeGroupedWi, _group;\n if ((_object$canBeGrouped = object.canBeGrouped) !== null && _object$canBeGrouped !== void 0 && _object$canBeGrouped.call(object, depth) && (_group$canBeGroupedWi = (_group = group[group.length - 1]).canBeGroupedWith) !== null && _group$canBeGroupedWi !== void 0 && _group$canBeGroupedWi.call(_group, object, depth)) {\n group.push(object);\n return;\n } else {\n objects.push(new this(group, {\n depth,\n asTree\n }));\n group = null;\n }\n }\n if ((_object$canBeGrouped2 = object.canBeGrouped) !== null && _object$canBeGrouped2 !== void 0 && _object$canBeGrouped2.call(object, depth)) {\n group = [object];\n } else {\n objects.push(object);\n }\n });\n if (group) {\n objects.push(new this(group, {\n depth,\n asTree\n }));\n }\n return objects;\n }\n constructor() {\n let objects = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let {\n depth,\n asTree\n } = arguments.length > 1 ? arguments[1] : undefined;\n this.objects = objects;\n if (asTree) {\n this.depth = depth;\n this.objects = this.constructor.groupObjects(this.objects, {\n asTree,\n depth: this.depth + 1\n });\n }\n }\n getObjects() {\n return this.objects;\n }\n getDepth() {\n return this.depth;\n }\n getCacheKey() {\n const keys = [\"objectGroup\"];\n Array.from(this.getObjects()).forEach(object => {\n keys.push(object.getCacheKey());\n });\n return keys.join(\"/\");\n }\n}\n\nclass ObjectMap extends BasicObject {\n constructor() {\n let objects = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n super(...arguments);\n this.objects = {};\n Array.from(objects).forEach(object => {\n const hash = JSON.stringify(object);\n if (this.objects[hash] == null) {\n this.objects[hash] = object;\n }\n });\n }\n find(object) {\n const hash = JSON.stringify(object);\n return this.objects[hash];\n }\n}\n\nclass ElementStore {\n constructor(elements) {\n this.reset(elements);\n }\n add(element) {\n const key = getKey(element);\n this.elements[key] = element;\n }\n remove(element) {\n const key = getKey(element);\n const value = this.elements[key];\n if (value) {\n delete this.elements[key];\n return value;\n }\n }\n reset() {\n let elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n this.elements = {};\n Array.from(elements).forEach(element => {\n this.add(element);\n });\n return elements;\n }\n}\nconst getKey = element => element.dataset.trixStoreKey;\n\nclass Operation extends BasicObject {\n isPerforming() {\n return this.performing === true;\n }\n hasPerformed() {\n return this.performed === true;\n }\n hasSucceeded() {\n return this.performed && this.succeeded;\n }\n hasFailed() {\n return this.performed && !this.succeeded;\n }\n getPromise() {\n if (!this.promise) {\n this.promise = new Promise((resolve, reject) => {\n this.performing = true;\n return this.perform((succeeded, result) => {\n this.succeeded = succeeded;\n this.performing = false;\n this.performed = true;\n if (this.succeeded) {\n resolve(result);\n } else {\n reject(result);\n }\n });\n });\n }\n return this.promise;\n }\n perform(callback) {\n return callback(false);\n }\n release() {\n var _this$promise, _this$promise$cancel;\n (_this$promise = this.promise) === null || _this$promise === void 0 || (_this$promise$cancel = _this$promise.cancel) === null || _this$promise$cancel === void 0 || _this$promise$cancel.call(_this$promise);\n this.promise = null;\n this.performing = null;\n this.performed = null;\n this.succeeded = null;\n }\n}\nOperation.proxyMethod(\"getPromise().then\");\nOperation.proxyMethod(\"getPromise().catch\");\n\nclass ObjectView extends BasicObject {\n constructor(object) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super(...arguments);\n this.object = object;\n this.options = options;\n this.childViews = [];\n this.rootView = this;\n }\n getNodes() {\n if (!this.nodes) {\n this.nodes = this.createNodes();\n }\n return this.nodes.map(node => node.cloneNode(true));\n }\n invalidate() {\n var _this$parentView;\n this.nodes = null;\n this.childViews = [];\n return (_this$parentView = this.parentView) === null || _this$parentView === void 0 ? void 0 : _this$parentView.invalidate();\n }\n invalidateViewForObject(object) {\n var _this$findViewForObje;\n return (_this$findViewForObje = this.findViewForObject(object)) === null || _this$findViewForObje === void 0 ? void 0 : _this$findViewForObje.invalidate();\n }\n findOrCreateCachedChildView(viewClass, object, options) {\n let view = this.getCachedViewForObject(object);\n if (view) {\n this.recordChildView(view);\n } else {\n view = this.createChildView(...arguments);\n this.cacheViewForObject(view, object);\n }\n return view;\n }\n createChildView(viewClass, object) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (object instanceof ObjectGroup) {\n options.viewClass = viewClass;\n viewClass = ObjectGroupView;\n }\n const view = new viewClass(object, options);\n return this.recordChildView(view);\n }\n recordChildView(view) {\n view.parentView = this;\n view.rootView = this.rootView;\n this.childViews.push(view);\n return view;\n }\n getAllChildViews() {\n let views = [];\n this.childViews.forEach(childView => {\n views.push(childView);\n views = views.concat(childView.getAllChildViews());\n });\n return views;\n }\n findElement() {\n return this.findElementForObject(this.object);\n }\n findElementForObject(object) {\n const id = object === null || object === void 0 ? void 0 : object.id;\n if (id) {\n return this.rootView.element.querySelector(\"[data-trix-id='\".concat(id, \"']\"));\n }\n }\n findViewForObject(object) {\n for (const view of this.getAllChildViews()) {\n if (view.object === object) {\n return view;\n }\n }\n }\n getViewCache() {\n if (this.rootView === this) {\n if (this.isViewCachingEnabled()) {\n if (!this.viewCache) {\n this.viewCache = {};\n }\n return this.viewCache;\n }\n } else {\n return this.rootView.getViewCache();\n }\n }\n isViewCachingEnabled() {\n return this.shouldCacheViews !== false;\n }\n enableViewCaching() {\n this.shouldCacheViews = true;\n }\n disableViewCaching() {\n this.shouldCacheViews = false;\n }\n getCachedViewForObject(object) {\n var _this$getViewCache;\n return (_this$getViewCache = this.getViewCache()) === null || _this$getViewCache === void 0 ? void 0 : _this$getViewCache[object.getCacheKey()];\n }\n cacheViewForObject(view, object) {\n const cache = this.getViewCache();\n if (cache) {\n cache[object.getCacheKey()] = view;\n }\n }\n garbageCollectCachedViews() {\n const cache = this.getViewCache();\n if (cache) {\n const views = this.getAllChildViews().concat(this);\n const objectKeys = views.map(view => view.object.getCacheKey());\n for (const key in cache) {\n if (!objectKeys.includes(key)) {\n delete cache[key];\n }\n }\n }\n }\n}\nclass ObjectGroupView extends ObjectView {\n constructor() {\n super(...arguments);\n this.objectGroup = this.object;\n this.viewClass = this.options.viewClass;\n delete this.options.viewClass;\n }\n getChildViews() {\n if (!this.childViews.length) {\n Array.from(this.objectGroup.getObjects()).forEach(object => {\n this.findOrCreateCachedChildView(this.viewClass, object, this.options);\n });\n }\n return this.childViews;\n }\n createNodes() {\n const element = this.createContainerElement();\n this.getChildViews().forEach(view => {\n Array.from(view.getNodes()).forEach(node => {\n element.appendChild(node);\n });\n });\n return [element];\n }\n createContainerElement() {\n let depth = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.objectGroup.getDepth();\n return this.getChildViews()[0].createContainerElement(depth);\n }\n}\n\nconst DEFAULT_ALLOWED_ATTRIBUTES = \"style href src width height language class\".split(\" \");\nconst DEFAULT_FORBIDDEN_PROTOCOLS = \"javascript:\".split(\" \");\nconst DEFAULT_FORBIDDEN_ELEMENTS = \"script iframe form noscript\".split(\" \");\nclass HTMLSanitizer extends BasicObject {\n static setHTML(element, html) {\n const sanitizedElement = new this(html).sanitize();\n const sanitizedHtml = sanitizedElement.getHTML ? sanitizedElement.getHTML() : sanitizedElement.outerHTML;\n element.innerHTML = sanitizedHtml;\n }\n static sanitize(html, options) {\n const sanitizer = new this(html, options);\n sanitizer.sanitize();\n return sanitizer;\n }\n constructor(html) {\n let {\n allowedAttributes,\n forbiddenProtocols,\n forbiddenElements\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super(...arguments);\n this.allowedAttributes = allowedAttributes || DEFAULT_ALLOWED_ATTRIBUTES;\n this.forbiddenProtocols = forbiddenProtocols || DEFAULT_FORBIDDEN_PROTOCOLS;\n this.forbiddenElements = forbiddenElements || DEFAULT_FORBIDDEN_ELEMENTS;\n this.body = createBodyElementForHTML(html);\n }\n sanitize() {\n this.sanitizeElements();\n return this.normalizeListElementNesting();\n }\n getHTML() {\n return this.body.innerHTML;\n }\n getBody() {\n return this.body;\n }\n\n // Private\n\n sanitizeElements() {\n const walker = walkTree(this.body);\n const nodesToRemove = [];\n while (walker.nextNode()) {\n const node = walker.currentNode;\n switch (node.nodeType) {\n case Node.ELEMENT_NODE:\n if (this.elementIsRemovable(node)) {\n nodesToRemove.push(node);\n } else {\n this.sanitizeElement(node);\n }\n break;\n case Node.COMMENT_NODE:\n nodesToRemove.push(node);\n break;\n }\n }\n nodesToRemove.forEach(node => removeNode(node));\n return this.body;\n }\n sanitizeElement(element) {\n if (element.hasAttribute(\"href\")) {\n if (this.forbiddenProtocols.includes(element.protocol)) {\n element.removeAttribute(\"href\");\n }\n }\n Array.from(element.attributes).forEach(_ref => {\n let {\n name\n } = _ref;\n if (!this.allowedAttributes.includes(name) && name.indexOf(\"data-trix\") !== 0) {\n element.removeAttribute(name);\n }\n });\n return element;\n }\n normalizeListElementNesting() {\n Array.from(this.body.querySelectorAll(\"ul,ol\")).forEach(listElement => {\n const previousElement = listElement.previousElementSibling;\n if (previousElement) {\n if (tagName(previousElement) === \"li\") {\n previousElement.appendChild(listElement);\n }\n }\n });\n return this.body;\n }\n elementIsRemovable(element) {\n if ((element === null || element === void 0 ? void 0 : element.nodeType) !== Node.ELEMENT_NODE) return;\n return this.elementIsForbidden(element) || this.elementIsntSerializable(element);\n }\n elementIsForbidden(element) {\n return this.forbiddenElements.includes(tagName(element));\n }\n elementIsntSerializable(element) {\n return element.getAttribute(\"data-trix-serialize\") === \"false\" && !nodeIsAttachmentElement(element);\n }\n}\nconst createBodyElementForHTML = function () {\n let html = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n // Remove everything after \n html = html.replace(/<\\/html[^>]*>[^]*$/i, \"\");\n const doc = document.implementation.createHTMLDocument(\"\");\n doc.documentElement.innerHTML = html;\n Array.from(doc.head.querySelectorAll(\"style\")).forEach(element => {\n doc.body.appendChild(element);\n });\n return doc.body;\n};\n\nconst {\n css: css$2\n} = config;\nclass AttachmentView extends ObjectView {\n constructor() {\n super(...arguments);\n this.attachment = this.object;\n this.attachment.uploadProgressDelegate = this;\n this.attachmentPiece = this.options.piece;\n }\n createContentNodes() {\n return [];\n }\n createNodes() {\n let innerElement;\n const figure = innerElement = makeElement({\n tagName: \"figure\",\n className: this.getClassName(),\n data: this.getData(),\n editable: false\n });\n const href = this.getHref();\n if (href) {\n innerElement = makeElement({\n tagName: \"a\",\n editable: false,\n attributes: {\n href,\n tabindex: -1\n }\n });\n figure.appendChild(innerElement);\n }\n if (this.attachment.hasContent()) {\n HTMLSanitizer.setHTML(innerElement, this.attachment.getContent());\n } else {\n this.createContentNodes().forEach(node => {\n innerElement.appendChild(node);\n });\n }\n innerElement.appendChild(this.createCaptionElement());\n if (this.attachment.isPending()) {\n this.progressElement = makeElement({\n tagName: \"progress\",\n attributes: {\n class: css$2.attachmentProgress,\n value: this.attachment.getUploadProgress(),\n max: 100\n },\n data: {\n trixMutable: true,\n trixStoreKey: [\"progressElement\", this.attachment.id].join(\"/\")\n }\n });\n figure.appendChild(this.progressElement);\n }\n return [createCursorTarget(\"left\"), figure, createCursorTarget(\"right\")];\n }\n createCaptionElement() {\n const figcaption = makeElement({\n tagName: \"figcaption\",\n className: css$2.attachmentCaption\n });\n const caption = this.attachmentPiece.getCaption();\n if (caption) {\n figcaption.classList.add(\"\".concat(css$2.attachmentCaption, \"--edited\"));\n figcaption.textContent = caption;\n } else {\n let name, size;\n const captionConfig = this.getCaptionConfig();\n if (captionConfig.name) {\n name = this.attachment.getFilename();\n }\n if (captionConfig.size) {\n size = this.attachment.getFormattedFilesize();\n }\n if (name) {\n const nameElement = makeElement({\n tagName: \"span\",\n className: css$2.attachmentName,\n textContent: name\n });\n figcaption.appendChild(nameElement);\n }\n if (size) {\n if (name) {\n figcaption.appendChild(document.createTextNode(\" \"));\n }\n const sizeElement = makeElement({\n tagName: \"span\",\n className: css$2.attachmentSize,\n textContent: size\n });\n figcaption.appendChild(sizeElement);\n }\n }\n return figcaption;\n }\n getClassName() {\n const names = [css$2.attachment, \"\".concat(css$2.attachment, \"--\").concat(this.attachment.getType())];\n const extension = this.attachment.getExtension();\n if (extension) {\n names.push(\"\".concat(css$2.attachment, \"--\").concat(extension));\n }\n return names.join(\" \");\n }\n getData() {\n const data = {\n trixAttachment: JSON.stringify(this.attachment),\n trixContentType: this.attachment.getContentType(),\n trixId: this.attachment.id\n };\n const {\n attributes\n } = this.attachmentPiece;\n if (!attributes.isEmpty()) {\n data.trixAttributes = JSON.stringify(attributes);\n }\n if (this.attachment.isPending()) {\n data.trixSerialize = false;\n }\n return data;\n }\n getHref() {\n if (!htmlContainsTagName(this.attachment.getContent(), \"a\")) {\n return this.attachment.getHref();\n }\n }\n getCaptionConfig() {\n var _config$attachments$t;\n const type = this.attachment.getType();\n const captionConfig = copyObject((_config$attachments$t = attachments[type]) === null || _config$attachments$t === void 0 ? void 0 : _config$attachments$t.caption);\n if (type === \"file\") {\n captionConfig.name = true;\n }\n return captionConfig;\n }\n findProgressElement() {\n var _this$findElement;\n return (_this$findElement = this.findElement()) === null || _this$findElement === void 0 ? void 0 : _this$findElement.querySelector(\"progress\");\n }\n\n // Attachment delegate\n\n attachmentDidChangeUploadProgress() {\n const value = this.attachment.getUploadProgress();\n const progressElement = this.findProgressElement();\n if (progressElement) {\n progressElement.value = value;\n }\n }\n}\nconst createCursorTarget = name => makeElement({\n tagName: \"span\",\n textContent: ZERO_WIDTH_SPACE,\n data: {\n trixCursorTarget: name,\n trixSerialize: false\n }\n});\nconst htmlContainsTagName = function (html, tagName) {\n const div = makeElement(\"div\");\n HTMLSanitizer.setHTML(div, html || \"\");\n return div.querySelector(tagName);\n};\n\nclass PreviewableAttachmentView extends AttachmentView {\n constructor() {\n super(...arguments);\n this.attachment.previewDelegate = this;\n }\n createContentNodes() {\n this.image = makeElement({\n tagName: \"img\",\n attributes: {\n src: \"\"\n },\n data: {\n trixMutable: true\n }\n });\n this.refresh(this.image);\n return [this.image];\n }\n createCaptionElement() {\n const figcaption = super.createCaptionElement(...arguments);\n if (!figcaption.textContent) {\n figcaption.setAttribute(\"data-trix-placeholder\", lang$1.captionPlaceholder);\n }\n return figcaption;\n }\n refresh(image) {\n if (!image) {\n var _this$findElement;\n image = (_this$findElement = this.findElement()) === null || _this$findElement === void 0 ? void 0 : _this$findElement.querySelector(\"img\");\n }\n if (image) {\n return this.updateAttributesForImage(image);\n }\n }\n updateAttributesForImage(image) {\n const url = this.attachment.getURL();\n const previewURL = this.attachment.getPreviewURL();\n image.src = previewURL || url;\n if (previewURL === url) {\n image.removeAttribute(\"data-trix-serialized-attributes\");\n } else {\n const serializedAttributes = JSON.stringify({\n src: url\n });\n image.setAttribute(\"data-trix-serialized-attributes\", serializedAttributes);\n }\n const width = this.attachment.getWidth();\n const height = this.attachment.getHeight();\n if (width != null) {\n image.width = width;\n }\n if (height != null) {\n image.height = height;\n }\n const storeKey = [\"imageElement\", this.attachment.id, image.src, image.width, image.height].join(\"/\");\n image.dataset.trixStoreKey = storeKey;\n }\n\n // Attachment delegate\n\n attachmentDidChangeAttributes() {\n this.refresh(this.image);\n return this.refresh();\n }\n}\n\n/* eslint-disable\n no-useless-escape,\n no-var,\n*/\nclass PieceView extends ObjectView {\n constructor() {\n super(...arguments);\n this.piece = this.object;\n this.attributes = this.piece.getAttributes();\n this.textConfig = this.options.textConfig;\n this.context = this.options.context;\n if (this.piece.attachment) {\n this.attachment = this.piece.attachment;\n } else {\n this.string = this.piece.toString();\n }\n }\n createNodes() {\n let nodes = this.attachment ? this.createAttachmentNodes() : this.createStringNodes();\n const element = this.createElement();\n if (element) {\n const innerElement = findInnerElement(element);\n Array.from(nodes).forEach(node => {\n innerElement.appendChild(node);\n });\n nodes = [element];\n }\n return nodes;\n }\n createAttachmentNodes() {\n const constructor = this.attachment.isPreviewable() ? PreviewableAttachmentView : AttachmentView;\n const view = this.createChildView(constructor, this.piece.attachment, {\n piece: this.piece\n });\n return view.getNodes();\n }\n createStringNodes() {\n var _this$textConfig;\n if ((_this$textConfig = this.textConfig) !== null && _this$textConfig !== void 0 && _this$textConfig.plaintext) {\n return [document.createTextNode(this.string)];\n } else {\n const nodes = [];\n const iterable = this.string.split(\"\\n\");\n for (let index = 0; index < iterable.length; index++) {\n const substring = iterable[index];\n if (index > 0) {\n const element = makeElement(\"br\");\n nodes.push(element);\n }\n if (substring.length) {\n const node = document.createTextNode(this.preserveSpaces(substring));\n nodes.push(node);\n }\n }\n return nodes;\n }\n }\n createElement() {\n let element, key, value;\n const styles = {};\n for (key in this.attributes) {\n value = this.attributes[key];\n const config = getTextConfig(key);\n if (config) {\n if (config.tagName) {\n var innerElement;\n const pendingElement = makeElement(config.tagName);\n if (innerElement) {\n innerElement.appendChild(pendingElement);\n innerElement = pendingElement;\n } else {\n element = innerElement = pendingElement;\n }\n }\n if (config.styleProperty) {\n styles[config.styleProperty] = value;\n }\n if (config.style) {\n for (key in config.style) {\n value = config.style[key];\n styles[key] = value;\n }\n }\n }\n }\n if (Object.keys(styles).length) {\n if (!element) {\n element = makeElement(\"span\");\n }\n for (key in styles) {\n value = styles[key];\n element.style[key] = value;\n }\n }\n return element;\n }\n createContainerElement() {\n for (const key in this.attributes) {\n const value = this.attributes[key];\n const config = getTextConfig(key);\n if (config) {\n if (config.groupTagName) {\n const attributes = {};\n attributes[key] = value;\n return makeElement(config.groupTagName, attributes);\n }\n }\n }\n }\n preserveSpaces(string) {\n if (this.context.isLast) {\n string = string.replace(/\\ $/, NON_BREAKING_SPACE);\n }\n string = string.replace(/(\\S)\\ {3}(\\S)/g, \"$1 \".concat(NON_BREAKING_SPACE, \" $2\")).replace(/\\ {2}/g, \"\".concat(NON_BREAKING_SPACE, \" \")).replace(/\\ {2}/g, \" \".concat(NON_BREAKING_SPACE));\n if (this.context.isFirst || this.context.followsWhitespace) {\n string = string.replace(/^\\ /, NON_BREAKING_SPACE);\n }\n return string;\n }\n}\n\n/* eslint-disable\n no-var,\n*/\nclass TextView extends ObjectView {\n constructor() {\n super(...arguments);\n this.text = this.object;\n this.textConfig = this.options.textConfig;\n }\n createNodes() {\n const nodes = [];\n const pieces = ObjectGroup.groupObjects(this.getPieces());\n const lastIndex = pieces.length - 1;\n for (let index = 0; index < pieces.length; index++) {\n const piece = pieces[index];\n const context = {};\n if (index === 0) {\n context.isFirst = true;\n }\n if (index === lastIndex) {\n context.isLast = true;\n }\n if (endsWithWhitespace(previousPiece)) {\n context.followsWhitespace = true;\n }\n const view = this.findOrCreateCachedChildView(PieceView, piece, {\n textConfig: this.textConfig,\n context\n });\n nodes.push(...Array.from(view.getNodes() || []));\n var previousPiece = piece;\n }\n return nodes;\n }\n getPieces() {\n return Array.from(this.text.getPieces()).filter(piece => !piece.hasAttribute(\"blockBreak\"));\n }\n}\nconst endsWithWhitespace = piece => /\\s$/.test(piece === null || piece === void 0 ? void 0 : piece.toString());\n\nconst {\n css: css$1\n} = config;\nclass BlockView extends ObjectView {\n constructor() {\n super(...arguments);\n this.block = this.object;\n this.attributes = this.block.getAttributes();\n }\n createNodes() {\n const comment = document.createComment(\"block\");\n const nodes = [comment];\n if (this.block.isEmpty()) {\n nodes.push(makeElement(\"br\"));\n } else {\n var _getBlockConfig;\n const textConfig = (_getBlockConfig = getBlockConfig(this.block.getLastAttribute())) === null || _getBlockConfig === void 0 ? void 0 : _getBlockConfig.text;\n const textView = this.findOrCreateCachedChildView(TextView, this.block.text, {\n textConfig\n });\n nodes.push(...Array.from(textView.getNodes() || []));\n if (this.shouldAddExtraNewlineElement()) {\n nodes.push(makeElement(\"br\"));\n }\n }\n if (this.attributes.length) {\n return nodes;\n } else {\n let attributes$1;\n const {\n tagName\n } = attributes.default;\n if (this.block.isRTL()) {\n attributes$1 = {\n dir: \"rtl\"\n };\n }\n const element = makeElement({\n tagName,\n attributes: attributes$1\n });\n nodes.forEach(node => element.appendChild(node));\n return [element];\n }\n }\n createContainerElement(depth) {\n const attributes = {};\n let className;\n const attributeName = this.attributes[depth];\n const {\n tagName,\n htmlAttributes = []\n } = getBlockConfig(attributeName);\n if (depth === 0 && this.block.isRTL()) {\n Object.assign(attributes, {\n dir: \"rtl\"\n });\n }\n if (attributeName === \"attachmentGallery\") {\n const size = this.block.getBlockBreakPosition();\n className = \"\".concat(css$1.attachmentGallery, \" \").concat(css$1.attachmentGallery, \"--\").concat(size);\n }\n Object.entries(this.block.htmlAttributes).forEach(_ref => {\n let [name, value] = _ref;\n if (htmlAttributes.includes(name)) {\n attributes[name] = value;\n }\n });\n return makeElement({\n tagName,\n className,\n attributes\n });\n }\n\n // A single
at the end of a block element has no visual representation\n // so add an extra one.\n shouldAddExtraNewlineElement() {\n return /\\n\\n$/.test(this.block.toString());\n }\n}\n\nclass DocumentView extends ObjectView {\n static render(document) {\n const element = makeElement(\"div\");\n const view = new this(document, {\n element\n });\n view.render();\n view.sync();\n return element;\n }\n constructor() {\n super(...arguments);\n this.element = this.options.element;\n this.elementStore = new ElementStore();\n this.setDocument(this.object);\n }\n setDocument(document) {\n if (!document.isEqualTo(this.document)) {\n this.document = this.object = document;\n }\n }\n render() {\n this.childViews = [];\n this.shadowElement = makeElement(\"div\");\n if (!this.document.isEmpty()) {\n const objects = ObjectGroup.groupObjects(this.document.getBlocks(), {\n asTree: true\n });\n Array.from(objects).forEach(object => {\n const view = this.findOrCreateCachedChildView(BlockView, object);\n Array.from(view.getNodes()).map(node => this.shadowElement.appendChild(node));\n });\n }\n }\n isSynced() {\n return elementsHaveEqualHTML(this.shadowElement, this.element);\n }\n sync() {\n const fragment = this.createDocumentFragmentForSync();\n while (this.element.lastChild) {\n this.element.removeChild(this.element.lastChild);\n }\n this.element.appendChild(fragment);\n return this.didSync();\n }\n\n // Private\n\n didSync() {\n this.elementStore.reset(findStoredElements(this.element));\n return defer(() => this.garbageCollectCachedViews());\n }\n createDocumentFragmentForSync() {\n const fragment = document.createDocumentFragment();\n Array.from(this.shadowElement.childNodes).forEach(node => {\n fragment.appendChild(node.cloneNode(true));\n });\n Array.from(findStoredElements(fragment)).forEach(element => {\n const storedElement = this.elementStore.remove(element);\n if (storedElement) {\n element.parentNode.replaceChild(storedElement, element);\n }\n });\n return fragment;\n }\n}\nconst findStoredElements = element => element.querySelectorAll(\"[data-trix-store-key]\");\nconst elementsHaveEqualHTML = (element, otherElement) => ignoreSpaces(element.innerHTML) === ignoreSpaces(otherElement.innerHTML);\nconst ignoreSpaces = html => html.replace(/ /g, \" \");\n\nfunction _AsyncGenerator(e) {\n var r, t;\n function resume(r, t) {\n try {\n var n = e[r](t),\n o = n.value,\n u = o instanceof _OverloadYield;\n Promise.resolve(u ? o.v : o).then(function (t) {\n if (u) {\n var i = \"return\" === r ? \"return\" : \"next\";\n if (!o.k || t.done) return resume(i, t);\n t = e[i](t).value;\n }\n settle(n.done ? \"return\" : \"normal\", t);\n }, function (e) {\n resume(\"throw\", e);\n });\n } catch (e) {\n settle(\"throw\", e);\n }\n }\n function settle(e, n) {\n switch (e) {\n case \"return\":\n r.resolve({\n value: n,\n done: !0\n });\n break;\n case \"throw\":\n r.reject(n);\n break;\n default:\n r.resolve({\n value: n,\n done: !1\n });\n }\n (r = r.next) ? resume(r.key, r.arg) : t = null;\n }\n this._invoke = function (e, n) {\n return new Promise(function (o, u) {\n var i = {\n key: e,\n arg: n,\n resolve: o,\n reject: u,\n next: null\n };\n t ? t = t.next = i : (r = t = i, resume(e, n));\n });\n }, \"function\" != typeof e.return && (this.return = void 0);\n}\n_AsyncGenerator.prototype[\"function\" == typeof Symbol && Symbol.asyncIterator || \"@@asyncIterator\"] = function () {\n return this;\n}, _AsyncGenerator.prototype.next = function (e) {\n return this._invoke(\"next\", e);\n}, _AsyncGenerator.prototype.throw = function (e) {\n return this._invoke(\"throw\", e);\n}, _AsyncGenerator.prototype.return = function (e) {\n return this._invoke(\"return\", e);\n};\nfunction _OverloadYield(t, e) {\n this.v = t, this.k = e;\n}\nfunction old_createMetadataMethodsForProperty(e, t, a, r) {\n return {\n getMetadata: function (o) {\n old_assertNotFinished(r, \"getMetadata\"), old_assertMetadataKey(o);\n var i = e[o];\n if (void 0 !== i) if (1 === t) {\n var n = i.public;\n if (void 0 !== n) return n[a];\n } else if (2 === t) {\n var l = i.private;\n if (void 0 !== l) return l.get(a);\n } else if (Object.hasOwnProperty.call(i, \"constructor\")) return i.constructor;\n },\n setMetadata: function (o, i) {\n old_assertNotFinished(r, \"setMetadata\"), old_assertMetadataKey(o);\n var n = e[o];\n if (void 0 === n && (n = e[o] = {}), 1 === t) {\n var l = n.public;\n void 0 === l && (l = n.public = {}), l[a] = i;\n } else if (2 === t) {\n var s = n.priv;\n void 0 === s && (s = n.private = new Map()), s.set(a, i);\n } else n.constructor = i;\n }\n };\n}\nfunction old_convertMetadataMapToFinal(e, t) {\n var a = e[Symbol.metadata || Symbol.for(\"Symbol.metadata\")],\n r = Object.getOwnPropertySymbols(t);\n if (0 !== r.length) {\n for (var o = 0; o < r.length; o++) {\n var i = r[o],\n n = t[i],\n l = a ? a[i] : null,\n s = n.public,\n c = l ? l.public : null;\n s && c && Object.setPrototypeOf(s, c);\n var d = n.private;\n if (d) {\n var u = Array.from(d.values()),\n f = l ? l.private : null;\n f && (u = u.concat(f)), n.private = u;\n }\n l && Object.setPrototypeOf(n, l);\n }\n a && Object.setPrototypeOf(t, a), e[Symbol.metadata || Symbol.for(\"Symbol.metadata\")] = t;\n }\n}\nfunction old_createAddInitializerMethod(e, t) {\n return function (a) {\n old_assertNotFinished(t, \"addInitializer\"), old_assertCallable(a, \"An initializer\"), e.push(a);\n };\n}\nfunction old_memberDec(e, t, a, r, o, i, n, l, s) {\n var c;\n switch (i) {\n case 1:\n c = \"accessor\";\n break;\n case 2:\n c = \"method\";\n break;\n case 3:\n c = \"getter\";\n break;\n case 4:\n c = \"setter\";\n break;\n default:\n c = \"field\";\n }\n var d,\n u,\n f = {\n kind: c,\n name: l ? \"#\" + t : t,\n isStatic: n,\n isPrivate: l\n },\n p = {\n v: !1\n };\n if (0 !== i && (f.addInitializer = old_createAddInitializerMethod(o, p)), l) {\n d = 2, u = Symbol(t);\n var v = {};\n 0 === i ? (v.get = a.get, v.set = a.set) : 2 === i ? v.get = function () {\n return a.value;\n } : (1 !== i && 3 !== i || (v.get = function () {\n return a.get.call(this);\n }), 1 !== i && 4 !== i || (v.set = function (e) {\n a.set.call(this, e);\n })), f.access = v;\n } else d = 1, u = t;\n try {\n return e(s, Object.assign(f, old_createMetadataMethodsForProperty(r, d, u, p)));\n } finally {\n p.v = !0;\n }\n}\nfunction old_assertNotFinished(e, t) {\n if (e.v) throw new Error(\"attempted to call \" + t + \" after decoration was finished\");\n}\nfunction old_assertMetadataKey(e) {\n if (\"symbol\" != typeof e) throw new TypeError(\"Metadata keys must be symbols, received: \" + e);\n}\nfunction old_assertCallable(e, t) {\n if (\"function\" != typeof e) throw new TypeError(t + \" must be a function\");\n}\nfunction old_assertValidReturnValue(e, t) {\n var a = typeof t;\n if (1 === e) {\n if (\"object\" !== a || null === t) throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or void 0\");\n void 0 !== t.get && old_assertCallable(t.get, \"accessor.get\"), void 0 !== t.set && old_assertCallable(t.set, \"accessor.set\"), void 0 !== t.init && old_assertCallable(t.init, \"accessor.init\"), void 0 !== t.initializer && old_assertCallable(t.initializer, \"accessor.initializer\");\n } else if (\"function\" !== a) {\n var r;\n throw r = 0 === e ? \"field\" : 10 === e ? \"class\" : \"method\", new TypeError(r + \" decorators must return a function or void 0\");\n }\n}\nfunction old_getInit(e) {\n var t;\n return null == (t = e.init) && (t = e.initializer) && \"undefined\" != typeof console && console.warn(\".initializer has been renamed to .init as of March 2022\"), t;\n}\nfunction old_applyMemberDec(e, t, a, r, o, i, n, l, s) {\n var c,\n d,\n u,\n f,\n p,\n v,\n h = a[0];\n if (n ? c = 0 === o || 1 === o ? {\n get: a[3],\n set: a[4]\n } : 3 === o ? {\n get: a[3]\n } : 4 === o ? {\n set: a[3]\n } : {\n value: a[3]\n } : 0 !== o && (c = Object.getOwnPropertyDescriptor(t, r)), 1 === o ? u = {\n get: c.get,\n set: c.set\n } : 2 === o ? u = c.value : 3 === o ? u = c.get : 4 === o && (u = c.set), \"function\" == typeof h) void 0 !== (f = old_memberDec(h, r, c, l, s, o, i, n, u)) && (old_assertValidReturnValue(o, f), 0 === o ? d = f : 1 === o ? (d = old_getInit(f), p = f.get || u.get, v = f.set || u.set, u = {\n get: p,\n set: v\n }) : u = f);else for (var y = h.length - 1; y >= 0; y--) {\n var b;\n if (void 0 !== (f = old_memberDec(h[y], r, c, l, s, o, i, n, u))) old_assertValidReturnValue(o, f), 0 === o ? b = f : 1 === o ? (b = old_getInit(f), p = f.get || u.get, v = f.set || u.set, u = {\n get: p,\n set: v\n }) : u = f, void 0 !== b && (void 0 === d ? d = b : \"function\" == typeof d ? d = [d, b] : d.push(b));\n }\n if (0 === o || 1 === o) {\n if (void 0 === d) d = function (e, t) {\n return t;\n };else if (\"function\" != typeof d) {\n var g = d;\n d = function (e, t) {\n for (var a = t, r = 0; r < g.length; r++) a = g[r].call(e, a);\n return a;\n };\n } else {\n var m = d;\n d = function (e, t) {\n return m.call(e, t);\n };\n }\n e.push(d);\n }\n 0 !== o && (1 === o ? (c.get = u.get, c.set = u.set) : 2 === o ? c.value = u : 3 === o ? c.get = u : 4 === o && (c.set = u), n ? 1 === o ? (e.push(function (e, t) {\n return u.get.call(e, t);\n }), e.push(function (e, t) {\n return u.set.call(e, t);\n })) : 2 === o ? e.push(u) : e.push(function (e, t) {\n return u.call(e, t);\n }) : Object.defineProperty(t, r, c));\n}\nfunction old_applyMemberDecs(e, t, a, r, o) {\n for (var i, n, l = new Map(), s = new Map(), c = 0; c < o.length; c++) {\n var d = o[c];\n if (Array.isArray(d)) {\n var u,\n f,\n p,\n v = d[1],\n h = d[2],\n y = d.length > 3,\n b = v >= 5;\n if (b ? (u = t, f = r, 0 !== (v -= 5) && (p = n = n || [])) : (u = t.prototype, f = a, 0 !== v && (p = i = i || [])), 0 !== v && !y) {\n var g = b ? s : l,\n m = g.get(h) || 0;\n if (!0 === m || 3 === m && 4 !== v || 4 === m && 3 !== v) throw new Error(\"Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: \" + h);\n !m && v > 2 ? g.set(h, v) : g.set(h, !0);\n }\n old_applyMemberDec(e, u, d, h, v, b, y, f, p);\n }\n }\n old_pushInitializers(e, i), old_pushInitializers(e, n);\n}\nfunction old_pushInitializers(e, t) {\n t && e.push(function (e) {\n for (var a = 0; a < t.length; a++) t[a].call(e);\n return e;\n });\n}\nfunction old_applyClassDecs(e, t, a, r) {\n if (r.length > 0) {\n for (var o = [], i = t, n = t.name, l = r.length - 1; l >= 0; l--) {\n var s = {\n v: !1\n };\n try {\n var c = Object.assign({\n kind: \"class\",\n name: n,\n addInitializer: old_createAddInitializerMethod(o, s)\n }, old_createMetadataMethodsForProperty(a, 0, n, s)),\n d = r[l](i, c);\n } finally {\n s.v = !0;\n }\n void 0 !== d && (old_assertValidReturnValue(10, d), i = d);\n }\n e.push(i, function () {\n for (var e = 0; e < o.length; e++) o[e].call(i);\n });\n }\n}\nfunction _applyDecs(e, t, a) {\n var r = [],\n o = {},\n i = {};\n return old_applyMemberDecs(r, e, i, o, t), old_convertMetadataMapToFinal(e.prototype, i), old_applyClassDecs(r, e, o, a), old_convertMetadataMapToFinal(e, o), r;\n}\nfunction applyDecs2203Factory() {\n function createAddInitializerMethod(e, t) {\n return function (r) {\n !function (e, t) {\n if (e.v) throw new Error(\"attempted to call \" + t + \" after decoration was finished\");\n }(t, \"addInitializer\"), assertCallable(r, \"An initializer\"), e.push(r);\n };\n }\n function memberDec(e, t, r, a, n, i, s, o) {\n var c;\n switch (n) {\n case 1:\n c = \"accessor\";\n break;\n case 2:\n c = \"method\";\n break;\n case 3:\n c = \"getter\";\n break;\n case 4:\n c = \"setter\";\n break;\n default:\n c = \"field\";\n }\n var l,\n u,\n f = {\n kind: c,\n name: s ? \"#\" + t : t,\n static: i,\n private: s\n },\n p = {\n v: !1\n };\n 0 !== n && (f.addInitializer = createAddInitializerMethod(a, p)), 0 === n ? s ? (l = r.get, u = r.set) : (l = function () {\n return this[t];\n }, u = function (e) {\n this[t] = e;\n }) : 2 === n ? l = function () {\n return r.value;\n } : (1 !== n && 3 !== n || (l = function () {\n return r.get.call(this);\n }), 1 !== n && 4 !== n || (u = function (e) {\n r.set.call(this, e);\n })), f.access = l && u ? {\n get: l,\n set: u\n } : l ? {\n get: l\n } : {\n set: u\n };\n try {\n return e(o, f);\n } finally {\n p.v = !0;\n }\n }\n function assertCallable(e, t) {\n if (\"function\" != typeof e) throw new TypeError(t + \" must be a function\");\n }\n function assertValidReturnValue(e, t) {\n var r = typeof t;\n if (1 === e) {\n if (\"object\" !== r || null === t) throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or void 0\");\n void 0 !== t.get && assertCallable(t.get, \"accessor.get\"), void 0 !== t.set && assertCallable(t.set, \"accessor.set\"), void 0 !== t.init && assertCallable(t.init, \"accessor.init\");\n } else if (\"function\" !== r) {\n var a;\n throw a = 0 === e ? \"field\" : 10 === e ? \"class\" : \"method\", new TypeError(a + \" decorators must return a function or void 0\");\n }\n }\n function applyMemberDec(e, t, r, a, n, i, s, o) {\n var c,\n l,\n u,\n f,\n p,\n d,\n h = r[0];\n if (s ? c = 0 === n || 1 === n ? {\n get: r[3],\n set: r[4]\n } : 3 === n ? {\n get: r[3]\n } : 4 === n ? {\n set: r[3]\n } : {\n value: r[3]\n } : 0 !== n && (c = Object.getOwnPropertyDescriptor(t, a)), 1 === n ? u = {\n get: c.get,\n set: c.set\n } : 2 === n ? u = c.value : 3 === n ? u = c.get : 4 === n && (u = c.set), \"function\" == typeof h) void 0 !== (f = memberDec(h, a, c, o, n, i, s, u)) && (assertValidReturnValue(n, f), 0 === n ? l = f : 1 === n ? (l = f.init, p = f.get || u.get, d = f.set || u.set, u = {\n get: p,\n set: d\n }) : u = f);else for (var v = h.length - 1; v >= 0; v--) {\n var g;\n if (void 0 !== (f = memberDec(h[v], a, c, o, n, i, s, u))) assertValidReturnValue(n, f), 0 === n ? g = f : 1 === n ? (g = f.init, p = f.get || u.get, d = f.set || u.set, u = {\n get: p,\n set: d\n }) : u = f, void 0 !== g && (void 0 === l ? l = g : \"function\" == typeof l ? l = [l, g] : l.push(g));\n }\n if (0 === n || 1 === n) {\n if (void 0 === l) l = function (e, t) {\n return t;\n };else if (\"function\" != typeof l) {\n var y = l;\n l = function (e, t) {\n for (var r = t, a = 0; a < y.length; a++) r = y[a].call(e, r);\n return r;\n };\n } else {\n var m = l;\n l = function (e, t) {\n return m.call(e, t);\n };\n }\n e.push(l);\n }\n 0 !== n && (1 === n ? (c.get = u.get, c.set = u.set) : 2 === n ? c.value = u : 3 === n ? c.get = u : 4 === n && (c.set = u), s ? 1 === n ? (e.push(function (e, t) {\n return u.get.call(e, t);\n }), e.push(function (e, t) {\n return u.set.call(e, t);\n })) : 2 === n ? e.push(u) : e.push(function (e, t) {\n return u.call(e, t);\n }) : Object.defineProperty(t, a, c));\n }\n function pushInitializers(e, t) {\n t && e.push(function (e) {\n for (var r = 0; r < t.length; r++) t[r].call(e);\n return e;\n });\n }\n return function (e, t, r) {\n var a = [];\n return function (e, t, r) {\n for (var a, n, i = new Map(), s = new Map(), o = 0; o < r.length; o++) {\n var c = r[o];\n if (Array.isArray(c)) {\n var l,\n u,\n f = c[1],\n p = c[2],\n d = c.length > 3,\n h = f >= 5;\n if (h ? (l = t, 0 != (f -= 5) && (u = n = n || [])) : (l = t.prototype, 0 !== f && (u = a = a || [])), 0 !== f && !d) {\n var v = h ? s : i,\n g = v.get(p) || 0;\n if (!0 === g || 3 === g && 4 !== f || 4 === g && 3 !== f) throw new Error(\"Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: \" + p);\n !g && f > 2 ? v.set(p, f) : v.set(p, !0);\n }\n applyMemberDec(e, l, c, p, f, h, d, u);\n }\n }\n pushInitializers(e, a), pushInitializers(e, n);\n }(a, e, t), function (e, t, r) {\n if (r.length > 0) {\n for (var a = [], n = t, i = t.name, s = r.length - 1; s >= 0; s--) {\n var o = {\n v: !1\n };\n try {\n var c = r[s](n, {\n kind: \"class\",\n name: i,\n addInitializer: createAddInitializerMethod(a, o)\n });\n } finally {\n o.v = !0;\n }\n void 0 !== c && (assertValidReturnValue(10, c), n = c);\n }\n e.push(n, function () {\n for (var e = 0; e < a.length; e++) a[e].call(n);\n });\n }\n }(a, e, r), a;\n };\n}\nvar applyDecs2203Impl;\nfunction _applyDecs2203(e, t, r) {\n return (applyDecs2203Impl = applyDecs2203Impl || applyDecs2203Factory())(e, t, r);\n}\nfunction applyDecs2203RFactory() {\n function createAddInitializerMethod(e, t) {\n return function (r) {\n !function (e, t) {\n if (e.v) throw new Error(\"attempted to call \" + t + \" after decoration was finished\");\n }(t, \"addInitializer\"), assertCallable(r, \"An initializer\"), e.push(r);\n };\n }\n function memberDec(e, t, r, n, a, i, s, o) {\n var c;\n switch (a) {\n case 1:\n c = \"accessor\";\n break;\n case 2:\n c = \"method\";\n break;\n case 3:\n c = \"getter\";\n break;\n case 4:\n c = \"setter\";\n break;\n default:\n c = \"field\";\n }\n var l,\n u,\n f = {\n kind: c,\n name: s ? \"#\" + t : t,\n static: i,\n private: s\n },\n p = {\n v: !1\n };\n 0 !== a && (f.addInitializer = createAddInitializerMethod(n, p)), 0 === a ? s ? (l = r.get, u = r.set) : (l = function () {\n return this[t];\n }, u = function (e) {\n this[t] = e;\n }) : 2 === a ? l = function () {\n return r.value;\n } : (1 !== a && 3 !== a || (l = function () {\n return r.get.call(this);\n }), 1 !== a && 4 !== a || (u = function (e) {\n r.set.call(this, e);\n })), f.access = l && u ? {\n get: l,\n set: u\n } : l ? {\n get: l\n } : {\n set: u\n };\n try {\n return e(o, f);\n } finally {\n p.v = !0;\n }\n }\n function assertCallable(e, t) {\n if (\"function\" != typeof e) throw new TypeError(t + \" must be a function\");\n }\n function assertValidReturnValue(e, t) {\n var r = typeof t;\n if (1 === e) {\n if (\"object\" !== r || null === t) throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or void 0\");\n void 0 !== t.get && assertCallable(t.get, \"accessor.get\"), void 0 !== t.set && assertCallable(t.set, \"accessor.set\"), void 0 !== t.init && assertCallable(t.init, \"accessor.init\");\n } else if (\"function\" !== r) {\n var n;\n throw n = 0 === e ? \"field\" : 10 === e ? \"class\" : \"method\", new TypeError(n + \" decorators must return a function or void 0\");\n }\n }\n function applyMemberDec(e, t, r, n, a, i, s, o) {\n var c,\n l,\n u,\n f,\n p,\n d,\n h = r[0];\n if (s ? c = 0 === a || 1 === a ? {\n get: r[3],\n set: r[4]\n } : 3 === a ? {\n get: r[3]\n } : 4 === a ? {\n set: r[3]\n } : {\n value: r[3]\n } : 0 !== a && (c = Object.getOwnPropertyDescriptor(t, n)), 1 === a ? u = {\n get: c.get,\n set: c.set\n } : 2 === a ? u = c.value : 3 === a ? u = c.get : 4 === a && (u = c.set), \"function\" == typeof h) void 0 !== (f = memberDec(h, n, c, o, a, i, s, u)) && (assertValidReturnValue(a, f), 0 === a ? l = f : 1 === a ? (l = f.init, p = f.get || u.get, d = f.set || u.set, u = {\n get: p,\n set: d\n }) : u = f);else for (var v = h.length - 1; v >= 0; v--) {\n var g;\n if (void 0 !== (f = memberDec(h[v], n, c, o, a, i, s, u))) assertValidReturnValue(a, f), 0 === a ? g = f : 1 === a ? (g = f.init, p = f.get || u.get, d = f.set || u.set, u = {\n get: p,\n set: d\n }) : u = f, void 0 !== g && (void 0 === l ? l = g : \"function\" == typeof l ? l = [l, g] : l.push(g));\n }\n if (0 === a || 1 === a) {\n if (void 0 === l) l = function (e, t) {\n return t;\n };else if (\"function\" != typeof l) {\n var y = l;\n l = function (e, t) {\n for (var r = t, n = 0; n < y.length; n++) r = y[n].call(e, r);\n return r;\n };\n } else {\n var m = l;\n l = function (e, t) {\n return m.call(e, t);\n };\n }\n e.push(l);\n }\n 0 !== a && (1 === a ? (c.get = u.get, c.set = u.set) : 2 === a ? c.value = u : 3 === a ? c.get = u : 4 === a && (c.set = u), s ? 1 === a ? (e.push(function (e, t) {\n return u.get.call(e, t);\n }), e.push(function (e, t) {\n return u.set.call(e, t);\n })) : 2 === a ? e.push(u) : e.push(function (e, t) {\n return u.call(e, t);\n }) : Object.defineProperty(t, n, c));\n }\n function applyMemberDecs(e, t) {\n for (var r, n, a = [], i = new Map(), s = new Map(), o = 0; o < t.length; o++) {\n var c = t[o];\n if (Array.isArray(c)) {\n var l,\n u,\n f = c[1],\n p = c[2],\n d = c.length > 3,\n h = f >= 5;\n if (h ? (l = e, 0 !== (f -= 5) && (u = n = n || [])) : (l = e.prototype, 0 !== f && (u = r = r || [])), 0 !== f && !d) {\n var v = h ? s : i,\n g = v.get(p) || 0;\n if (!0 === g || 3 === g && 4 !== f || 4 === g && 3 !== f) throw new Error(\"Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: \" + p);\n !g && f > 2 ? v.set(p, f) : v.set(p, !0);\n }\n applyMemberDec(a, l, c, p, f, h, d, u);\n }\n }\n return pushInitializers(a, r), pushInitializers(a, n), a;\n }\n function pushInitializers(e, t) {\n t && e.push(function (e) {\n for (var r = 0; r < t.length; r++) t[r].call(e);\n return e;\n });\n }\n return function (e, t, r) {\n return {\n e: applyMemberDecs(e, t),\n get c() {\n return function (e, t) {\n if (t.length > 0) {\n for (var r = [], n = e, a = e.name, i = t.length - 1; i >= 0; i--) {\n var s = {\n v: !1\n };\n try {\n var o = t[i](n, {\n kind: \"class\",\n name: a,\n addInitializer: createAddInitializerMethod(r, s)\n });\n } finally {\n s.v = !0;\n }\n void 0 !== o && (assertValidReturnValue(10, o), n = o);\n }\n return [n, function () {\n for (var e = 0; e < r.length; e++) r[e].call(n);\n }];\n }\n }(e, r);\n }\n };\n };\n}\nfunction _applyDecs2203R(e, t, r) {\n return (_applyDecs2203R = applyDecs2203RFactory())(e, t, r);\n}\nfunction applyDecs2301Factory() {\n function createAddInitializerMethod(e, t) {\n return function (r) {\n !function (e, t) {\n if (e.v) throw new Error(\"attempted to call \" + t + \" after decoration was finished\");\n }(t, \"addInitializer\"), assertCallable(r, \"An initializer\"), e.push(r);\n };\n }\n function assertInstanceIfPrivate(e, t) {\n if (!e(t)) throw new TypeError(\"Attempted to access private element on non-instance\");\n }\n function memberDec(e, t, r, n, a, i, s, o, c) {\n var u;\n switch (a) {\n case 1:\n u = \"accessor\";\n break;\n case 2:\n u = \"method\";\n break;\n case 3:\n u = \"getter\";\n break;\n case 4:\n u = \"setter\";\n break;\n default:\n u = \"field\";\n }\n var l,\n f,\n p = {\n kind: u,\n name: s ? \"#\" + t : t,\n static: i,\n private: s\n },\n d = {\n v: !1\n };\n if (0 !== a && (p.addInitializer = createAddInitializerMethod(n, d)), s || 0 !== a && 2 !== a) {\n if (2 === a) l = function (e) {\n return assertInstanceIfPrivate(c, e), r.value;\n };else {\n var h = 0 === a || 1 === a;\n (h || 3 === a) && (l = s ? function (e) {\n return assertInstanceIfPrivate(c, e), r.get.call(e);\n } : function (e) {\n return r.get.call(e);\n }), (h || 4 === a) && (f = s ? function (e, t) {\n assertInstanceIfPrivate(c, e), r.set.call(e, t);\n } : function (e, t) {\n r.set.call(e, t);\n });\n }\n } else l = function (e) {\n return e[t];\n }, 0 === a && (f = function (e, r) {\n e[t] = r;\n });\n var v = s ? c.bind() : function (e) {\n return t in e;\n };\n p.access = l && f ? {\n get: l,\n set: f,\n has: v\n } : l ? {\n get: l,\n has: v\n } : {\n set: f,\n has: v\n };\n try {\n return e(o, p);\n } finally {\n d.v = !0;\n }\n }\n function assertCallable(e, t) {\n if (\"function\" != typeof e) throw new TypeError(t + \" must be a function\");\n }\n function assertValidReturnValue(e, t) {\n var r = typeof t;\n if (1 === e) {\n if (\"object\" !== r || null === t) throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or void 0\");\n void 0 !== t.get && assertCallable(t.get, \"accessor.get\"), void 0 !== t.set && assertCallable(t.set, \"accessor.set\"), void 0 !== t.init && assertCallable(t.init, \"accessor.init\");\n } else if (\"function\" !== r) {\n var n;\n throw n = 0 === e ? \"field\" : 10 === e ? \"class\" : \"method\", new TypeError(n + \" decorators must return a function or void 0\");\n }\n }\n function curryThis2(e) {\n return function (t) {\n e(this, t);\n };\n }\n function applyMemberDec(e, t, r, n, a, i, s, o, c) {\n var u,\n l,\n f,\n p,\n d,\n h,\n v,\n g = r[0];\n if (s ? u = 0 === a || 1 === a ? {\n get: (p = r[3], function () {\n return p(this);\n }),\n set: curryThis2(r[4])\n } : 3 === a ? {\n get: r[3]\n } : 4 === a ? {\n set: r[3]\n } : {\n value: r[3]\n } : 0 !== a && (u = Object.getOwnPropertyDescriptor(t, n)), 1 === a ? f = {\n get: u.get,\n set: u.set\n } : 2 === a ? f = u.value : 3 === a ? f = u.get : 4 === a && (f = u.set), \"function\" == typeof g) void 0 !== (d = memberDec(g, n, u, o, a, i, s, f, c)) && (assertValidReturnValue(a, d), 0 === a ? l = d : 1 === a ? (l = d.init, h = d.get || f.get, v = d.set || f.set, f = {\n get: h,\n set: v\n }) : f = d);else for (var y = g.length - 1; y >= 0; y--) {\n var m;\n if (void 0 !== (d = memberDec(g[y], n, u, o, a, i, s, f, c))) assertValidReturnValue(a, d), 0 === a ? m = d : 1 === a ? (m = d.init, h = d.get || f.get, v = d.set || f.set, f = {\n get: h,\n set: v\n }) : f = d, void 0 !== m && (void 0 === l ? l = m : \"function\" == typeof l ? l = [l, m] : l.push(m));\n }\n if (0 === a || 1 === a) {\n if (void 0 === l) l = function (e, t) {\n return t;\n };else if (\"function\" != typeof l) {\n var b = l;\n l = function (e, t) {\n for (var r = t, n = 0; n < b.length; n++) r = b[n].call(e, r);\n return r;\n };\n } else {\n var I = l;\n l = function (e, t) {\n return I.call(e, t);\n };\n }\n e.push(l);\n }\n 0 !== a && (1 === a ? (u.get = f.get, u.set = f.set) : 2 === a ? u.value = f : 3 === a ? u.get = f : 4 === a && (u.set = f), s ? 1 === a ? (e.push(function (e, t) {\n return f.get.call(e, t);\n }), e.push(function (e, t) {\n return f.set.call(e, t);\n })) : 2 === a ? e.push(f) : e.push(function (e, t) {\n return f.call(e, t);\n }) : Object.defineProperty(t, n, u));\n }\n function applyMemberDecs(e, t, r) {\n for (var n, a, i, s = [], o = new Map(), c = new Map(), u = 0; u < t.length; u++) {\n var l = t[u];\n if (Array.isArray(l)) {\n var f,\n p,\n d = l[1],\n h = l[2],\n v = l.length > 3,\n g = d >= 5,\n y = r;\n if (g ? (f = e, 0 !== (d -= 5) && (p = a = a || []), v && !i && (i = function (t) {\n return _checkInRHS(t) === e;\n }), y = i) : (f = e.prototype, 0 !== d && (p = n = n || [])), 0 !== d && !v) {\n var m = g ? c : o,\n b = m.get(h) || 0;\n if (!0 === b || 3 === b && 4 !== d || 4 === b && 3 !== d) throw new Error(\"Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: \" + h);\n !b && d > 2 ? m.set(h, d) : m.set(h, !0);\n }\n applyMemberDec(s, f, l, h, d, g, v, p, y);\n }\n }\n return pushInitializers(s, n), pushInitializers(s, a), s;\n }\n function pushInitializers(e, t) {\n t && e.push(function (e) {\n for (var r = 0; r < t.length; r++) t[r].call(e);\n return e;\n });\n }\n return function (e, t, r, n) {\n return {\n e: applyMemberDecs(e, t, n),\n get c() {\n return function (e, t) {\n if (t.length > 0) {\n for (var r = [], n = e, a = e.name, i = t.length - 1; i >= 0; i--) {\n var s = {\n v: !1\n };\n try {\n var o = t[i](n, {\n kind: \"class\",\n name: a,\n addInitializer: createAddInitializerMethod(r, s)\n });\n } finally {\n s.v = !0;\n }\n void 0 !== o && (assertValidReturnValue(10, o), n = o);\n }\n return [n, function () {\n for (var e = 0; e < r.length; e++) r[e].call(n);\n }];\n }\n }(e, r);\n }\n };\n };\n}\nfunction _applyDecs2301(e, t, r, n) {\n return (_applyDecs2301 = applyDecs2301Factory())(e, t, r, n);\n}\nfunction createAddInitializerMethod(e, t) {\n return function (r) {\n assertNotFinished(t, \"addInitializer\"), assertCallable(r, \"An initializer\"), e.push(r);\n };\n}\nfunction assertInstanceIfPrivate(e, t) {\n if (!e(t)) throw new TypeError(\"Attempted to access private element on non-instance\");\n}\nfunction memberDec(e, t, r, a, n, i, s, o, c, l, u) {\n var f;\n switch (i) {\n case 1:\n f = \"accessor\";\n break;\n case 2:\n f = \"method\";\n break;\n case 3:\n f = \"getter\";\n break;\n case 4:\n f = \"setter\";\n break;\n default:\n f = \"field\";\n }\n var d,\n p,\n h = {\n kind: f,\n name: o ? \"#\" + r : r,\n static: s,\n private: o,\n metadata: u\n },\n v = {\n v: !1\n };\n if (0 !== i && (h.addInitializer = createAddInitializerMethod(n, v)), o || 0 !== i && 2 !== i) {\n if (2 === i) d = function (e) {\n return assertInstanceIfPrivate(l, e), a.value;\n };else {\n var y = 0 === i || 1 === i;\n (y || 3 === i) && (d = o ? function (e) {\n return assertInstanceIfPrivate(l, e), a.get.call(e);\n } : function (e) {\n return a.get.call(e);\n }), (y || 4 === i) && (p = o ? function (e, t) {\n assertInstanceIfPrivate(l, e), a.set.call(e, t);\n } : function (e, t) {\n a.set.call(e, t);\n });\n }\n } else d = function (e) {\n return e[r];\n }, 0 === i && (p = function (e, t) {\n e[r] = t;\n });\n var m = o ? l.bind() : function (e) {\n return r in e;\n };\n h.access = d && p ? {\n get: d,\n set: p,\n has: m\n } : d ? {\n get: d,\n has: m\n } : {\n set: p,\n has: m\n };\n try {\n return e.call(t, c, h);\n } finally {\n v.v = !0;\n }\n}\nfunction assertNotFinished(e, t) {\n if (e.v) throw new Error(\"attempted to call \" + t + \" after decoration was finished\");\n}\nfunction assertCallable(e, t) {\n if (\"function\" != typeof e) throw new TypeError(t + \" must be a function\");\n}\nfunction assertValidReturnValue(e, t) {\n var r = typeof t;\n if (1 === e) {\n if (\"object\" !== r || null === t) throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or void 0\");\n void 0 !== t.get && assertCallable(t.get, \"accessor.get\"), void 0 !== t.set && assertCallable(t.set, \"accessor.set\"), void 0 !== t.init && assertCallable(t.init, \"accessor.init\");\n } else if (\"function\" !== r) {\n var a;\n throw a = 0 === e ? \"field\" : 5 === e ? \"class\" : \"method\", new TypeError(a + \" decorators must return a function or void 0\");\n }\n}\nfunction curryThis1(e) {\n return function () {\n return e(this);\n };\n}\nfunction curryThis2(e) {\n return function (t) {\n e(this, t);\n };\n}\nfunction applyMemberDec(e, t, r, a, n, i, s, o, c, l, u) {\n var f,\n d,\n p,\n h,\n v,\n y,\n m = r[0];\n a || Array.isArray(m) || (m = [m]), o ? f = 0 === i || 1 === i ? {\n get: curryThis1(r[3]),\n set: curryThis2(r[4])\n } : 3 === i ? {\n get: r[3]\n } : 4 === i ? {\n set: r[3]\n } : {\n value: r[3]\n } : 0 !== i && (f = Object.getOwnPropertyDescriptor(t, n)), 1 === i ? p = {\n get: f.get,\n set: f.set\n } : 2 === i ? p = f.value : 3 === i ? p = f.get : 4 === i && (p = f.set);\n for (var g = a ? 2 : 1, b = m.length - 1; b >= 0; b -= g) {\n var I;\n if (void 0 !== (h = memberDec(m[b], a ? m[b - 1] : void 0, n, f, c, i, s, o, p, l, u))) assertValidReturnValue(i, h), 0 === i ? I = h : 1 === i ? (I = h.init, v = h.get || p.get, y = h.set || p.set, p = {\n get: v,\n set: y\n }) : p = h, void 0 !== I && (void 0 === d ? d = I : \"function\" == typeof d ? d = [d, I] : d.push(I));\n }\n if (0 === i || 1 === i) {\n if (void 0 === d) d = function (e, t) {\n return t;\n };else if (\"function\" != typeof d) {\n var w = d;\n d = function (e, t) {\n for (var r = t, a = w.length - 1; a >= 0; a--) r = w[a].call(e, r);\n return r;\n };\n } else {\n var M = d;\n d = function (e, t) {\n return M.call(e, t);\n };\n }\n e.push(d);\n }\n 0 !== i && (1 === i ? (f.get = p.get, f.set = p.set) : 2 === i ? f.value = p : 3 === i ? f.get = p : 4 === i && (f.set = p), o ? 1 === i ? (e.push(function (e, t) {\n return p.get.call(e, t);\n }), e.push(function (e, t) {\n return p.set.call(e, t);\n })) : 2 === i ? e.push(p) : e.push(function (e, t) {\n return p.call(e, t);\n }) : Object.defineProperty(t, n, f));\n}\nfunction applyMemberDecs(e, t, r, a) {\n for (var n, i, s, o = [], c = new Map(), l = new Map(), u = 0; u < t.length; u++) {\n var f = t[u];\n if (Array.isArray(f)) {\n var d,\n p,\n h = f[1],\n v = f[2],\n y = f.length > 3,\n m = 16 & h,\n g = !!(8 & h),\n b = r;\n if (h &= 7, g ? (d = e, 0 !== h && (p = i = i || []), y && !s && (s = function (t) {\n return _checkInRHS(t) === e;\n }), b = s) : (d = e.prototype, 0 !== h && (p = n = n || [])), 0 !== h && !y) {\n var I = g ? l : c,\n w = I.get(v) || 0;\n if (!0 === w || 3 === w && 4 !== h || 4 === w && 3 !== h) throw new Error(\"Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: \" + v);\n I.set(v, !(!w && h > 2) || h);\n }\n applyMemberDec(o, d, f, m, v, h, g, y, p, b, a);\n }\n }\n return pushInitializers(o, n), pushInitializers(o, i), o;\n}\nfunction pushInitializers(e, t) {\n t && e.push(function (e) {\n for (var r = 0; r < t.length; r++) t[r].call(e);\n return e;\n });\n}\nfunction applyClassDecs(e, t, r, a) {\n if (t.length) {\n for (var n = [], i = e, s = e.name, o = r ? 2 : 1, c = t.length - 1; c >= 0; c -= o) {\n var l = {\n v: !1\n };\n try {\n var u = t[c].call(r ? t[c - 1] : void 0, i, {\n kind: \"class\",\n name: s,\n addInitializer: createAddInitializerMethod(n, l),\n metadata: a\n });\n } finally {\n l.v = !0;\n }\n void 0 !== u && (assertValidReturnValue(5, u), i = u);\n }\n return [defineMetadata(i, a), function () {\n for (var e = 0; e < n.length; e++) n[e].call(i);\n }];\n }\n}\nfunction defineMetadata(e, t) {\n return Object.defineProperty(e, Symbol.metadata || Symbol.for(\"Symbol.metadata\"), {\n configurable: !0,\n enumerable: !0,\n value: t\n });\n}\nfunction _applyDecs2305(e, t, r, a, n, i) {\n if (arguments.length >= 6) var s = i[Symbol.metadata || Symbol.for(\"Symbol.metadata\")];\n var o = Object.create(void 0 === s ? null : s),\n c = applyMemberDecs(e, t, n, o);\n return r.length || defineMetadata(e, o), {\n e: c,\n get c() {\n return applyClassDecs(e, r, a, o);\n }\n };\n}\nfunction _asyncGeneratorDelegate(t) {\n var e = {},\n n = !1;\n function pump(e, r) {\n return n = !0, r = new Promise(function (n) {\n n(t[e](r));\n }), {\n done: !1,\n value: new _OverloadYield(r, 1)\n };\n }\n return e[\"undefined\" != typeof Symbol && Symbol.iterator || \"@@iterator\"] = function () {\n return this;\n }, e.next = function (t) {\n return n ? (n = !1, t) : pump(\"next\", t);\n }, \"function\" == typeof t.throw && (e.throw = function (t) {\n if (n) throw n = !1, t;\n return pump(\"throw\", t);\n }), \"function\" == typeof t.return && (e.return = function (t) {\n return n ? (n = !1, t) : pump(\"return\", t);\n }), e;\n}\nfunction _asyncIterator(r) {\n var n,\n t,\n o,\n e = 2;\n for (\"undefined\" != typeof Symbol && (t = Symbol.asyncIterator, o = Symbol.iterator); e--;) {\n if (t && null != (n = r[t])) return n.call(r);\n if (o && null != (n = r[o])) return new AsyncFromSyncIterator(n.call(r));\n t = \"@@asyncIterator\", o = \"@@iterator\";\n }\n throw new TypeError(\"Object is not async iterable\");\n}\nfunction AsyncFromSyncIterator(r) {\n function AsyncFromSyncIteratorContinuation(r) {\n if (Object(r) !== r) return Promise.reject(new TypeError(r + \" is not an object.\"));\n var n = r.done;\n return Promise.resolve(r.value).then(function (r) {\n return {\n value: r,\n done: n\n };\n });\n }\n return AsyncFromSyncIterator = function (r) {\n this.s = r, this.n = r.next;\n }, AsyncFromSyncIterator.prototype = {\n s: null,\n n: null,\n next: function () {\n return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments));\n },\n return: function (r) {\n var n = this.s.return;\n return void 0 === n ? Promise.resolve({\n value: r,\n done: !0\n }) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments));\n },\n throw: function (r) {\n var n = this.s.return;\n return void 0 === n ? Promise.reject(r) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments));\n }\n }, new AsyncFromSyncIterator(r);\n}\nfunction _awaitAsyncGenerator(e) {\n return new _OverloadYield(e, 0);\n}\nfunction _checkInRHS(e) {\n if (Object(e) !== e) throw TypeError(\"right-hand side of 'in' should be an object, got \" + (null !== e ? typeof e : \"null\"));\n return e;\n}\nfunction _defineAccessor(e, r, n, t) {\n var c = {\n configurable: !0,\n enumerable: !0\n };\n return c[e] = t, Object.defineProperty(r, n, c);\n}\nfunction dispose_SuppressedError(r, e) {\n return \"undefined\" != typeof SuppressedError ? dispose_SuppressedError = SuppressedError : (dispose_SuppressedError = function (r, e) {\n this.suppressed = r, this.error = e, this.stack = new Error().stack;\n }, dispose_SuppressedError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: dispose_SuppressedError,\n writable: !0,\n configurable: !0\n }\n })), new dispose_SuppressedError(r, e);\n}\nfunction _dispose(r, e, s) {\n function next() {\n for (; r.length > 0;) try {\n var o = r.pop(),\n p = o.d.call(o.v);\n if (o.a) return Promise.resolve(p).then(next, err);\n } catch (r) {\n return err(r);\n }\n if (s) throw e;\n }\n function err(r) {\n return e = s ? new dispose_SuppressedError(r, e) : r, s = !0, next();\n }\n return next();\n}\nfunction _importDeferProxy(e) {\n var t = null,\n constValue = function (e) {\n return function () {\n return e;\n };\n },\n proxy = function (r) {\n return function (n, o, f) {\n return null === t && (t = e()), r(t, o, f);\n };\n };\n return new Proxy({}, {\n defineProperty: constValue(!1),\n deleteProperty: constValue(!1),\n get: proxy(Reflect.get),\n getOwnPropertyDescriptor: proxy(Reflect.getOwnPropertyDescriptor),\n getPrototypeOf: constValue(null),\n isExtensible: constValue(!1),\n has: proxy(Reflect.has),\n ownKeys: proxy(Reflect.ownKeys),\n preventExtensions: constValue(!0),\n set: constValue(!1),\n setPrototypeOf: constValue(!1)\n });\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _iterableToArrayLimitLoose(e, r) {\n var t = e && (\"undefined\" != typeof Symbol && e[Symbol.iterator] || e[\"@@iterator\"]);\n if (null != t) {\n var o,\n l = [];\n for (t = t.call(e); e.length < r && !(o = t.next()).done;) l.push(o.value);\n return l;\n }\n}\nvar REACT_ELEMENT_TYPE;\nfunction _jsx(e, r, E, l) {\n REACT_ELEMENT_TYPE || (REACT_ELEMENT_TYPE = \"function\" == typeof Symbol && Symbol.for && Symbol.for(\"react.element\") || 60103);\n var o = e && e.defaultProps,\n n = arguments.length - 3;\n if (r || 0 === n || (r = {\n children: void 0\n }), 1 === n) r.children = l;else if (n > 1) {\n for (var t = new Array(n), f = 0; f < n; f++) t[f] = arguments[f + 3];\n r.children = t;\n }\n if (r && o) for (var i in o) void 0 === r[i] && (r[i] = o[i]);else r || (r = o || {});\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: e,\n key: void 0 === E ? null : \"\" + E,\n ref: null,\n props: r,\n _owner: null\n };\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n _regeneratorRuntime = function () {\n return e;\n };\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function (t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == typeof h && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function (t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw new Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator.return && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(typeof e + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function (e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function () {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function (e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw new Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function (t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function (t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function (t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n catch: function (t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function (e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _using(o, e, n) {\n if (null == e) return e;\n if (\"object\" != typeof e) throw new TypeError(\"using declarations can only be used with objects, null, or undefined.\");\n if (n) var r = e[Symbol.asyncDispose || Symbol.for(\"Symbol.asyncDispose\")];\n if (null == r && (r = e[Symbol.dispose || Symbol.for(\"Symbol.dispose\")]), \"function\" != typeof r) throw new TypeError(\"Property [Symbol.dispose] is not a function.\");\n return o.push({\n v: e,\n d: r,\n a: n\n }), e;\n}\nfunction _wrapRegExp() {\n _wrapRegExp = function (e, r) {\n return new BabelRegExp(e, void 0, r);\n };\n var e = RegExp.prototype,\n r = new WeakMap();\n function BabelRegExp(e, t, p) {\n var o = new RegExp(e, t);\n return r.set(o, p || r.get(e)), _setPrototypeOf(o, BabelRegExp.prototype);\n }\n function buildGroups(e, t) {\n var p = r.get(t);\n return Object.keys(p).reduce(function (r, t) {\n var o = p[t];\n if (\"number\" == typeof o) r[t] = e[o];else {\n for (var i = 0; void 0 === e[o[i]] && i + 1 < o.length;) i++;\n r[t] = e[o[i]];\n }\n return r;\n }, Object.create(null));\n }\n return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (r) {\n var t = e.exec.call(this, r);\n if (t) {\n t.groups = buildGroups(t, this);\n var p = t.indices;\n p && (p.groups = buildGroups(p, this));\n }\n return t;\n }, BabelRegExp.prototype[Symbol.replace] = function (t, p) {\n if (\"string\" == typeof p) {\n var o = r.get(this);\n return e[Symbol.replace].call(this, t, p.replace(/\\$<([^>]+)>/g, function (e, r) {\n var t = o[r];\n return \"$\" + (Array.isArray(t) ? t.join(\"$\") : t);\n }));\n }\n if (\"function\" == typeof p) {\n var i = this;\n return e[Symbol.replace].call(this, t, function () {\n var e = arguments;\n return \"object\" != typeof e[e.length - 1] && (e = [].slice.call(e)).push(buildGroups(e, i)), p.apply(this, e);\n });\n }\n return e[Symbol.replace].call(this, t, p);\n }, _wrapRegExp.apply(this, arguments);\n}\nfunction _AwaitValue(value) {\n this.wrapped = value;\n}\nfunction _wrapAsyncGenerator(fn) {\n return function () {\n return new _AsyncGenerator(fn.apply(this, arguments));\n };\n}\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _defineEnumerableProperties(obj, descs) {\n for (var key in descs) {\n var desc = descs[key];\n desc.configurable = desc.enumerable = true;\n if (\"value\" in desc) desc.writable = true;\n Object.defineProperty(obj, key, desc);\n }\n if (Object.getOwnPropertySymbols) {\n var objectSymbols = Object.getOwnPropertySymbols(descs);\n for (var i = 0; i < objectSymbols.length; i++) {\n var sym = objectSymbols[i];\n var desc = descs[sym];\n desc.configurable = desc.enumerable = true;\n if (\"value\" in desc) desc.writable = true;\n Object.defineProperty(obj, sym, desc);\n }\n }\n return obj;\n}\nfunction _defaults(obj, defaults) {\n var keys = Object.getOwnPropertyNames(defaults);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = Object.getOwnPropertyDescriptor(defaults, key);\n if (value && value.configurable && obj[key] === undefined) {\n Object.defineProperty(obj, key, value);\n }\n }\n return obj;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? Object(arguments[i]) : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys.push.apply(ownKeys, Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n return target;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n _setPrototypeOf(subClass, superClass);\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}\nfunction _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n}\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function (nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction _newArrowCheck(innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError(\"Cannot instantiate an arrow function\");\n }\n}\nfunction _objectDestructuringEmpty(obj) {\n if (obj == null) throw new TypeError(\"Cannot destructure \" + obj);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}\nfunction _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n return desc.value;\n };\n }\n return _get.apply(this, arguments);\n}\nfunction set(target, property, value, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.set) {\n set = Reflect.set;\n } else {\n set = function set(target, property, value, receiver) {\n var base = _superPropBase(target, property);\n var desc;\n if (base) {\n desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.set) {\n desc.set.call(receiver, value);\n return true;\n } else if (!desc.writable) {\n return false;\n }\n }\n desc = Object.getOwnPropertyDescriptor(receiver, property);\n if (desc) {\n if (!desc.writable) {\n return false;\n }\n desc.value = value;\n Object.defineProperty(receiver, property, desc);\n } else {\n _defineProperty(receiver, property, value);\n }\n return true;\n };\n }\n return set(target, property, value, receiver);\n}\nfunction _set(target, property, value, receiver, isStrict) {\n var s = set(target, property, value, receiver || target);\n if (!s && isStrict) {\n throw new TypeError('failed to set property');\n }\n return value;\n}\nfunction _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}\nfunction _taggedTemplateLiteralLoose(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n strings.raw = raw;\n return strings;\n}\nfunction _readOnlyError(name) {\n throw new TypeError(\"\\\"\" + name + \"\\\" is read-only\");\n}\nfunction _writeOnlyError(name) {\n throw new TypeError(\"\\\"\" + name + \"\\\" is write-only\");\n}\nfunction _classNameTDZError(name) {\n throw new ReferenceError(\"Class \\\"\" + name + \"\\\" cannot be referenced in computed property keys.\");\n}\nfunction _temporalUndefined() {}\nfunction _tdz(name) {\n throw new ReferenceError(name + \" is not defined - temporal dead zone\");\n}\nfunction _temporalRef(val, name) {\n return val === _temporalUndefined ? _tdz(name) : val;\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _slicedToArrayLoose(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimitLoose(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _toArray(arr) {\n return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest();\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _maybeArrayLike(next, arr, i) {\n if (arr && !Array.isArray(arr) && typeof arr.length === \"number\") {\n var len = arr.length;\n return _arrayLikeToArray(arr, i !== void 0 && i < len ? i : len);\n }\n return next(arr, i);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function () {};\n return {\n s: F,\n n: function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function (e) {\n throw e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function () {\n it = it.call(o);\n },\n n: function () {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function (e) {\n didErr = true;\n err = e;\n },\n f: function () {\n try {\n if (!normalCompletion && it.return != null) it.return();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _skipFirstGeneratorNext(fn) {\n return function () {\n var it = fn.apply(this, arguments);\n it.next();\n return it;\n };\n}\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n}\nfunction _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that ' + 'transform-class-properties is enabled and runs after the decorators transform.');\n}\nfunction _initializerDefineProperty(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n}\nfunction _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object.keys(descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n if (desc.initializer === void 0) {\n Object.defineProperty(target, property, desc);\n desc = null;\n }\n return desc;\n}\nvar id$1 = 0;\nfunction _classPrivateFieldLooseKey(name) {\n return \"__private_\" + id$1++ + \"_\" + name;\n}\nfunction _classPrivateFieldLooseBase(receiver, privateKey) {\n if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {\n throw new TypeError(\"attempted to use private field on non-instance\");\n }\n return receiver;\n}\nfunction _classPrivateFieldGet(receiver, privateMap) {\n var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"get\");\n return _classApplyDescriptorGet(receiver, descriptor);\n}\nfunction _classPrivateFieldSet(receiver, privateMap, value) {\n var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"set\");\n _classApplyDescriptorSet(receiver, descriptor, value);\n return value;\n}\nfunction _classPrivateFieldDestructureSet(receiver, privateMap) {\n var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"set\");\n return _classApplyDescriptorDestructureSet(receiver, descriptor);\n}\nfunction _classExtractFieldDescriptor(receiver, privateMap, action) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to \" + action + \" private field on non-instance\");\n }\n return privateMap.get(receiver);\n}\nfunction _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) {\n _classCheckPrivateStaticAccess(receiver, classConstructor);\n _classCheckPrivateStaticFieldDescriptor(descriptor, \"get\");\n return _classApplyDescriptorGet(receiver, descriptor);\n}\nfunction _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) {\n _classCheckPrivateStaticAccess(receiver, classConstructor);\n _classCheckPrivateStaticFieldDescriptor(descriptor, \"set\");\n _classApplyDescriptorSet(receiver, descriptor, value);\n return value;\n}\nfunction _classStaticPrivateMethodGet(receiver, classConstructor, method) {\n _classCheckPrivateStaticAccess(receiver, classConstructor);\n return method;\n}\nfunction _classStaticPrivateMethodSet() {\n throw new TypeError(\"attempted to set read only static private field\");\n}\nfunction _classApplyDescriptorGet(receiver, descriptor) {\n if (descriptor.get) {\n return descriptor.get.call(receiver);\n }\n return descriptor.value;\n}\nfunction _classApplyDescriptorSet(receiver, descriptor, value) {\n if (descriptor.set) {\n descriptor.set.call(receiver, value);\n } else {\n if (!descriptor.writable) {\n throw new TypeError(\"attempted to set read only private field\");\n }\n descriptor.value = value;\n }\n}\nfunction _classApplyDescriptorDestructureSet(receiver, descriptor) {\n if (descriptor.set) {\n if (!(\"__destrObj\" in descriptor)) {\n descriptor.__destrObj = {\n set value(v) {\n descriptor.set.call(receiver, v);\n }\n };\n }\n return descriptor.__destrObj;\n } else {\n if (!descriptor.writable) {\n throw new TypeError(\"attempted to set read only private field\");\n }\n return descriptor;\n }\n}\nfunction _classStaticPrivateFieldDestructureSet(receiver, classConstructor, descriptor) {\n _classCheckPrivateStaticAccess(receiver, classConstructor);\n _classCheckPrivateStaticFieldDescriptor(descriptor, \"set\");\n return _classApplyDescriptorDestructureSet(receiver, descriptor);\n}\nfunction _classCheckPrivateStaticAccess(receiver, classConstructor) {\n if (receiver !== classConstructor) {\n throw new TypeError(\"Private static access of wrong provenance\");\n }\n}\nfunction _classCheckPrivateStaticFieldDescriptor(descriptor, action) {\n if (descriptor === undefined) {\n throw new TypeError(\"attempted to \" + action + \" private static field before its declaration\");\n }\n}\nfunction _decorate(decorators, factory, superClass, mixins) {\n var api = _getDecoratorsApi();\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n api = mixins[i](api);\n }\n }\n var r = factory(function initialize(O) {\n api.initializeInstanceElements(O, decorated.elements);\n }, superClass);\n var decorated = api.decorateClass(_coalesceClassElements(r.d.map(_createElementDescriptor)), decorators);\n api.initializeClassElements(r.F, decorated.elements);\n return api.runClassFinishers(r.F, decorated.finishers);\n}\nfunction _getDecoratorsApi() {\n _getDecoratorsApi = function () {\n return api;\n };\n var api = {\n elementsDefinitionOrder: [[\"method\"], [\"field\"]],\n initializeInstanceElements: function (O, elements) {\n [\"method\", \"field\"].forEach(function (kind) {\n elements.forEach(function (element) {\n if (element.kind === kind && element.placement === \"own\") {\n this.defineClassElement(O, element);\n }\n }, this);\n }, this);\n },\n initializeClassElements: function (F, elements) {\n var proto = F.prototype;\n [\"method\", \"field\"].forEach(function (kind) {\n elements.forEach(function (element) {\n var placement = element.placement;\n if (element.kind === kind && (placement === \"static\" || placement === \"prototype\")) {\n var receiver = placement === \"static\" ? F : proto;\n this.defineClassElement(receiver, element);\n }\n }, this);\n }, this);\n },\n defineClassElement: function (receiver, element) {\n var descriptor = element.descriptor;\n if (element.kind === \"field\") {\n var initializer = element.initializer;\n descriptor = {\n enumerable: descriptor.enumerable,\n writable: descriptor.writable,\n configurable: descriptor.configurable,\n value: initializer === void 0 ? void 0 : initializer.call(receiver)\n };\n }\n Object.defineProperty(receiver, element.key, descriptor);\n },\n decorateClass: function (elements, decorators) {\n var newElements = [];\n var finishers = [];\n var placements = {\n static: [],\n prototype: [],\n own: []\n };\n elements.forEach(function (element) {\n this.addElementPlacement(element, placements);\n }, this);\n elements.forEach(function (element) {\n if (!_hasDecorators(element)) return newElements.push(element);\n var elementFinishersExtras = this.decorateElement(element, placements);\n newElements.push(elementFinishersExtras.element);\n newElements.push.apply(newElements, elementFinishersExtras.extras);\n finishers.push.apply(finishers, elementFinishersExtras.finishers);\n }, this);\n if (!decorators) {\n return {\n elements: newElements,\n finishers: finishers\n };\n }\n var result = this.decorateConstructor(newElements, decorators);\n finishers.push.apply(finishers, result.finishers);\n result.finishers = finishers;\n return result;\n },\n addElementPlacement: function (element, placements, silent) {\n var keys = placements[element.placement];\n if (!silent && keys.indexOf(element.key) !== -1) {\n throw new TypeError(\"Duplicated element (\" + element.key + \")\");\n }\n keys.push(element.key);\n },\n decorateElement: function (element, placements) {\n var extras = [];\n var finishers = [];\n for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) {\n var keys = placements[element.placement];\n keys.splice(keys.indexOf(element.key), 1);\n var elementObject = this.fromElementDescriptor(element);\n var elementFinisherExtras = this.toElementFinisherExtras((0, decorators[i])(elementObject) || elementObject);\n element = elementFinisherExtras.element;\n this.addElementPlacement(element, placements);\n if (elementFinisherExtras.finisher) {\n finishers.push(elementFinisherExtras.finisher);\n }\n var newExtras = elementFinisherExtras.extras;\n if (newExtras) {\n for (var j = 0; j < newExtras.length; j++) {\n this.addElementPlacement(newExtras[j], placements);\n }\n extras.push.apply(extras, newExtras);\n }\n }\n return {\n element: element,\n finishers: finishers,\n extras: extras\n };\n },\n decorateConstructor: function (elements, decorators) {\n var finishers = [];\n for (var i = decorators.length - 1; i >= 0; i--) {\n var obj = this.fromClassDescriptor(elements);\n var elementsAndFinisher = this.toClassDescriptor((0, decorators[i])(obj) || obj);\n if (elementsAndFinisher.finisher !== undefined) {\n finishers.push(elementsAndFinisher.finisher);\n }\n if (elementsAndFinisher.elements !== undefined) {\n elements = elementsAndFinisher.elements;\n for (var j = 0; j < elements.length - 1; j++) {\n for (var k = j + 1; k < elements.length; k++) {\n if (elements[j].key === elements[k].key && elements[j].placement === elements[k].placement) {\n throw new TypeError(\"Duplicated element (\" + elements[j].key + \")\");\n }\n }\n }\n }\n }\n return {\n elements: elements,\n finishers: finishers\n };\n },\n fromElementDescriptor: function (element) {\n var obj = {\n kind: element.kind,\n key: element.key,\n placement: element.placement,\n descriptor: element.descriptor\n };\n var desc = {\n value: \"Descriptor\",\n configurable: true\n };\n Object.defineProperty(obj, Symbol.toStringTag, desc);\n if (element.kind === \"field\") obj.initializer = element.initializer;\n return obj;\n },\n toElementDescriptors: function (elementObjects) {\n if (elementObjects === undefined) return;\n return _toArray(elementObjects).map(function (elementObject) {\n var element = this.toElementDescriptor(elementObject);\n this.disallowProperty(elementObject, \"finisher\", \"An element descriptor\");\n this.disallowProperty(elementObject, \"extras\", \"An element descriptor\");\n return element;\n }, this);\n },\n toElementDescriptor: function (elementObject) {\n var kind = String(elementObject.kind);\n if (kind !== \"method\" && kind !== \"field\") {\n throw new TypeError('An element descriptor\\'s .kind property must be either \"method\" or' + ' \"field\", but a decorator created an element descriptor with' + ' .kind \"' + kind + '\"');\n }\n var key = _toPropertyKey(elementObject.key);\n var placement = String(elementObject.placement);\n if (placement !== \"static\" && placement !== \"prototype\" && placement !== \"own\") {\n throw new TypeError('An element descriptor\\'s .placement property must be one of \"static\",' + ' \"prototype\" or \"own\", but a decorator created an element descriptor' + ' with .placement \"' + placement + '\"');\n }\n var descriptor = elementObject.descriptor;\n this.disallowProperty(elementObject, \"elements\", \"An element descriptor\");\n var element = {\n kind: kind,\n key: key,\n placement: placement,\n descriptor: Object.assign({}, descriptor)\n };\n if (kind !== \"field\") {\n this.disallowProperty(elementObject, \"initializer\", \"A method descriptor\");\n } else {\n this.disallowProperty(descriptor, \"get\", \"The property descriptor of a field descriptor\");\n this.disallowProperty(descriptor, \"set\", \"The property descriptor of a field descriptor\");\n this.disallowProperty(descriptor, \"value\", \"The property descriptor of a field descriptor\");\n element.initializer = elementObject.initializer;\n }\n return element;\n },\n toElementFinisherExtras: function (elementObject) {\n var element = this.toElementDescriptor(elementObject);\n var finisher = _optionalCallableProperty(elementObject, \"finisher\");\n var extras = this.toElementDescriptors(elementObject.extras);\n return {\n element: element,\n finisher: finisher,\n extras: extras\n };\n },\n fromClassDescriptor: function (elements) {\n var obj = {\n kind: \"class\",\n elements: elements.map(this.fromElementDescriptor, this)\n };\n var desc = {\n value: \"Descriptor\",\n configurable: true\n };\n Object.defineProperty(obj, Symbol.toStringTag, desc);\n return obj;\n },\n toClassDescriptor: function (obj) {\n var kind = String(obj.kind);\n if (kind !== \"class\") {\n throw new TypeError('A class descriptor\\'s .kind property must be \"class\", but a decorator' + ' created a class descriptor with .kind \"' + kind + '\"');\n }\n this.disallowProperty(obj, \"key\", \"A class descriptor\");\n this.disallowProperty(obj, \"placement\", \"A class descriptor\");\n this.disallowProperty(obj, \"descriptor\", \"A class descriptor\");\n this.disallowProperty(obj, \"initializer\", \"A class descriptor\");\n this.disallowProperty(obj, \"extras\", \"A class descriptor\");\n var finisher = _optionalCallableProperty(obj, \"finisher\");\n var elements = this.toElementDescriptors(obj.elements);\n return {\n elements: elements,\n finisher: finisher\n };\n },\n runClassFinishers: function (constructor, finishers) {\n for (var i = 0; i < finishers.length; i++) {\n var newConstructor = (0, finishers[i])(constructor);\n if (newConstructor !== undefined) {\n if (typeof newConstructor !== \"function\") {\n throw new TypeError(\"Finishers must return a constructor.\");\n }\n constructor = newConstructor;\n }\n }\n return constructor;\n },\n disallowProperty: function (obj, name, objectType) {\n if (obj[name] !== undefined) {\n throw new TypeError(objectType + \" can't have a .\" + name + \" property.\");\n }\n }\n };\n return api;\n}\nfunction _createElementDescriptor(def) {\n var key = _toPropertyKey(def.key);\n var descriptor;\n if (def.kind === \"method\") {\n descriptor = {\n value: def.value,\n writable: true,\n configurable: true,\n enumerable: false\n };\n } else if (def.kind === \"get\") {\n descriptor = {\n get: def.value,\n configurable: true,\n enumerable: false\n };\n } else if (def.kind === \"set\") {\n descriptor = {\n set: def.value,\n configurable: true,\n enumerable: false\n };\n } else if (def.kind === \"field\") {\n descriptor = {\n configurable: true,\n writable: true,\n enumerable: true\n };\n }\n var element = {\n kind: def.kind === \"field\" ? \"field\" : \"method\",\n key: key,\n placement: def.static ? \"static\" : def.kind === \"field\" ? \"own\" : \"prototype\",\n descriptor: descriptor\n };\n if (def.decorators) element.decorators = def.decorators;\n if (def.kind === \"field\") element.initializer = def.value;\n return element;\n}\nfunction _coalesceGetterSetter(element, other) {\n if (element.descriptor.get !== undefined) {\n other.descriptor.get = element.descriptor.get;\n } else {\n other.descriptor.set = element.descriptor.set;\n }\n}\nfunction _coalesceClassElements(elements) {\n var newElements = [];\n var isSameElement = function (other) {\n return other.kind === \"method\" && other.key === element.key && other.placement === element.placement;\n };\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n var other;\n if (element.kind === \"method\" && (other = newElements.find(isSameElement))) {\n if (_isDataDescriptor(element.descriptor) || _isDataDescriptor(other.descriptor)) {\n if (_hasDecorators(element) || _hasDecorators(other)) {\n throw new ReferenceError(\"Duplicated methods (\" + element.key + \") can't be decorated.\");\n }\n other.descriptor = element.descriptor;\n } else {\n if (_hasDecorators(element)) {\n if (_hasDecorators(other)) {\n throw new ReferenceError(\"Decorators can't be placed on different accessors with for \" + \"the same property (\" + element.key + \").\");\n }\n other.decorators = element.decorators;\n }\n _coalesceGetterSetter(element, other);\n }\n } else {\n newElements.push(element);\n }\n }\n return newElements;\n}\nfunction _hasDecorators(element) {\n return element.decorators && element.decorators.length;\n}\nfunction _isDataDescriptor(desc) {\n return desc !== undefined && !(desc.value === undefined && desc.writable === undefined);\n}\nfunction _optionalCallableProperty(obj, name) {\n var value = obj[name];\n if (value !== undefined && typeof value !== \"function\") {\n throw new TypeError(\"Expected '\" + name + \"' to be a function\");\n }\n return value;\n}\nfunction _classPrivateMethodGet(receiver, privateSet, fn) {\n if (!privateSet.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return fn;\n}\nfunction _checkPrivateRedeclaration(obj, privateCollection) {\n if (privateCollection.has(obj)) {\n throw new TypeError(\"Cannot initialize the same private elements twice on an object\");\n }\n}\nfunction _classPrivateFieldInitSpec(obj, privateMap, value) {\n _checkPrivateRedeclaration(obj, privateMap);\n privateMap.set(obj, value);\n}\nfunction _classPrivateMethodInitSpec(obj, privateSet) {\n _checkPrivateRedeclaration(obj, privateSet);\n privateSet.add(obj);\n}\nfunction _classPrivateMethodSet() {\n throw new TypeError(\"attempted to reassign private method\");\n}\nfunction _identity(x) {\n return x;\n}\nfunction _nullishReceiverError(r) {\n throw new TypeError(\"Cannot set property of null or undefined.\");\n}\n\nclass Piece extends TrixObject {\n static registerType(type, constructor) {\n constructor.type = type;\n this.types[type] = constructor;\n }\n static fromJSON(pieceJSON) {\n const constructor = this.types[pieceJSON.type];\n if (constructor) {\n return constructor.fromJSON(pieceJSON);\n }\n }\n constructor(value) {\n let attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super(...arguments);\n this.attributes = Hash.box(attributes);\n }\n copyWithAttributes(attributes) {\n return new this.constructor(this.getValue(), attributes);\n }\n copyWithAdditionalAttributes(attributes) {\n return this.copyWithAttributes(this.attributes.merge(attributes));\n }\n copyWithoutAttribute(attribute) {\n return this.copyWithAttributes(this.attributes.remove(attribute));\n }\n copy() {\n return this.copyWithAttributes(this.attributes);\n }\n getAttribute(attribute) {\n return this.attributes.get(attribute);\n }\n getAttributesHash() {\n return this.attributes;\n }\n getAttributes() {\n return this.attributes.toObject();\n }\n hasAttribute(attribute) {\n return this.attributes.has(attribute);\n }\n hasSameStringValueAsPiece(piece) {\n return piece && this.toString() === piece.toString();\n }\n hasSameAttributesAsPiece(piece) {\n return piece && (this.attributes === piece.attributes || this.attributes.isEqualTo(piece.attributes));\n }\n isBlockBreak() {\n return false;\n }\n isEqualTo(piece) {\n return super.isEqualTo(...arguments) || this.hasSameConstructorAs(piece) && this.hasSameStringValueAsPiece(piece) && this.hasSameAttributesAsPiece(piece);\n }\n isEmpty() {\n return this.length === 0;\n }\n isSerializable() {\n return true;\n }\n toJSON() {\n return {\n type: this.constructor.type,\n attributes: this.getAttributes()\n };\n }\n contentsForInspection() {\n return {\n type: this.constructor.type,\n attributes: this.attributes.inspect()\n };\n }\n\n // Grouping\n\n canBeGrouped() {\n return this.hasAttribute(\"href\");\n }\n canBeGroupedWith(piece) {\n return this.getAttribute(\"href\") === piece.getAttribute(\"href\");\n }\n\n // Splittable\n\n getLength() {\n return this.length;\n }\n canBeConsolidatedWith(piece) {\n return false;\n }\n}\n_defineProperty(Piece, \"types\", {});\n\nclass ImagePreloadOperation extends Operation {\n constructor(url) {\n super(...arguments);\n this.url = url;\n }\n perform(callback) {\n const image = new Image();\n image.onload = () => {\n image.width = this.width = image.naturalWidth;\n image.height = this.height = image.naturalHeight;\n return callback(true, image);\n };\n image.onerror = () => callback(false);\n image.src = this.url;\n }\n}\n\nclass Attachment extends TrixObject {\n static attachmentForFile(file) {\n const attributes = this.attributesForFile(file);\n const attachment = new this(attributes);\n attachment.setFile(file);\n return attachment;\n }\n static attributesForFile(file) {\n return new Hash({\n filename: file.name,\n filesize: file.size,\n contentType: file.type\n });\n }\n static fromJSON(attachmentJSON) {\n return new this(attachmentJSON);\n }\n constructor() {\n let attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n super(attributes);\n this.releaseFile = this.releaseFile.bind(this);\n this.attributes = Hash.box(attributes);\n this.didChangeAttributes();\n }\n getAttribute(attribute) {\n return this.attributes.get(attribute);\n }\n hasAttribute(attribute) {\n return this.attributes.has(attribute);\n }\n getAttributes() {\n return this.attributes.toObject();\n }\n setAttributes() {\n let attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const newAttributes = this.attributes.merge(attributes);\n if (!this.attributes.isEqualTo(newAttributes)) {\n var _this$previewDelegate, _this$previewDelegate2, _this$delegate, _this$delegate$attach;\n this.attributes = newAttributes;\n this.didChangeAttributes();\n (_this$previewDelegate = this.previewDelegate) === null || _this$previewDelegate === void 0 || (_this$previewDelegate2 = _this$previewDelegate.attachmentDidChangeAttributes) === null || _this$previewDelegate2 === void 0 || _this$previewDelegate2.call(_this$previewDelegate, this);\n return (_this$delegate = this.delegate) === null || _this$delegate === void 0 || (_this$delegate$attach = _this$delegate.attachmentDidChangeAttributes) === null || _this$delegate$attach === void 0 ? void 0 : _this$delegate$attach.call(_this$delegate, this);\n }\n }\n didChangeAttributes() {\n if (this.isPreviewable()) {\n return this.preloadURL();\n }\n }\n isPending() {\n return this.file != null && !(this.getURL() || this.getHref());\n }\n isPreviewable() {\n if (this.attributes.has(\"previewable\")) {\n return this.attributes.get(\"previewable\");\n } else {\n return Attachment.previewablePattern.test(this.getContentType());\n }\n }\n getType() {\n if (this.hasContent()) {\n return \"content\";\n } else if (this.isPreviewable()) {\n return \"preview\";\n } else {\n return \"file\";\n }\n }\n getURL() {\n return this.attributes.get(\"url\");\n }\n getHref() {\n return this.attributes.get(\"href\");\n }\n getFilename() {\n return this.attributes.get(\"filename\") || \"\";\n }\n getFilesize() {\n return this.attributes.get(\"filesize\");\n }\n getFormattedFilesize() {\n const filesize = this.attributes.get(\"filesize\");\n if (typeof filesize === \"number\") {\n return file_size_formatting.formatter(filesize);\n } else {\n return \"\";\n }\n }\n getExtension() {\n var _this$getFilename$mat;\n return (_this$getFilename$mat = this.getFilename().match(/\\.(\\w+)$/)) === null || _this$getFilename$mat === void 0 ? void 0 : _this$getFilename$mat[1].toLowerCase();\n }\n getContentType() {\n return this.attributes.get(\"contentType\");\n }\n hasContent() {\n return this.attributes.has(\"content\");\n }\n getContent() {\n return this.attributes.get(\"content\");\n }\n getWidth() {\n return this.attributes.get(\"width\");\n }\n getHeight() {\n return this.attributes.get(\"height\");\n }\n getFile() {\n return this.file;\n }\n setFile(file) {\n this.file = file;\n if (this.isPreviewable()) {\n return this.preloadFile();\n }\n }\n releaseFile() {\n this.releasePreloadedFile();\n this.file = null;\n }\n getUploadProgress() {\n return this.uploadProgress != null ? this.uploadProgress : 0;\n }\n setUploadProgress(value) {\n if (this.uploadProgress !== value) {\n var _this$uploadProgressD, _this$uploadProgressD2;\n this.uploadProgress = value;\n return (_this$uploadProgressD = this.uploadProgressDelegate) === null || _this$uploadProgressD === void 0 || (_this$uploadProgressD2 = _this$uploadProgressD.attachmentDidChangeUploadProgress) === null || _this$uploadProgressD2 === void 0 ? void 0 : _this$uploadProgressD2.call(_this$uploadProgressD, this);\n }\n }\n toJSON() {\n return this.getAttributes();\n }\n getCacheKey() {\n return [super.getCacheKey(...arguments), this.attributes.getCacheKey(), this.getPreviewURL()].join(\"/\");\n }\n\n // Previewable\n\n getPreviewURL() {\n return this.previewURL || this.preloadingURL;\n }\n setPreviewURL(url) {\n if (url !== this.getPreviewURL()) {\n var _this$previewDelegate3, _this$previewDelegate4, _this$delegate2, _this$delegate2$attac;\n this.previewURL = url;\n (_this$previewDelegate3 = this.previewDelegate) === null || _this$previewDelegate3 === void 0 || (_this$previewDelegate4 = _this$previewDelegate3.attachmentDidChangeAttributes) === null || _this$previewDelegate4 === void 0 || _this$previewDelegate4.call(_this$previewDelegate3, this);\n return (_this$delegate2 = this.delegate) === null || _this$delegate2 === void 0 || (_this$delegate2$attac = _this$delegate2.attachmentDidChangePreviewURL) === null || _this$delegate2$attac === void 0 ? void 0 : _this$delegate2$attac.call(_this$delegate2, this);\n }\n }\n preloadURL() {\n return this.preload(this.getURL(), this.releaseFile);\n }\n preloadFile() {\n if (this.file) {\n this.fileObjectURL = URL.createObjectURL(this.file);\n return this.preload(this.fileObjectURL);\n }\n }\n releasePreloadedFile() {\n if (this.fileObjectURL) {\n URL.revokeObjectURL(this.fileObjectURL);\n this.fileObjectURL = null;\n }\n }\n preload(url, callback) {\n if (url && url !== this.getPreviewURL()) {\n this.preloadingURL = url;\n const operation = new ImagePreloadOperation(url);\n return operation.then(_ref => {\n let {\n width,\n height\n } = _ref;\n if (!this.getWidth() || !this.getHeight()) {\n this.setAttributes({\n width,\n height\n });\n }\n this.preloadingURL = null;\n this.setPreviewURL(url);\n return callback === null || callback === void 0 ? void 0 : callback();\n }).catch(() => {\n this.preloadingURL = null;\n return callback === null || callback === void 0 ? void 0 : callback();\n });\n }\n }\n}\n_defineProperty(Attachment, \"previewablePattern\", /^image(\\/(gif|png|webp|jpe?g)|$)/);\n\nclass AttachmentPiece extends Piece {\n static fromJSON(pieceJSON) {\n return new this(Attachment.fromJSON(pieceJSON.attachment), pieceJSON.attributes);\n }\n constructor(attachment) {\n super(...arguments);\n this.attachment = attachment;\n this.length = 1;\n this.ensureAttachmentExclusivelyHasAttribute(\"href\");\n if (!this.attachment.hasContent()) {\n this.removeProhibitedAttributes();\n }\n }\n ensureAttachmentExclusivelyHasAttribute(attribute) {\n if (this.hasAttribute(attribute)) {\n if (!this.attachment.hasAttribute(attribute)) {\n this.attachment.setAttributes(this.attributes.slice([attribute]));\n }\n this.attributes = this.attributes.remove(attribute);\n }\n }\n removeProhibitedAttributes() {\n const attributes = this.attributes.slice(AttachmentPiece.permittedAttributes);\n if (!attributes.isEqualTo(this.attributes)) {\n this.attributes = attributes;\n }\n }\n getValue() {\n return this.attachment;\n }\n isSerializable() {\n return !this.attachment.isPending();\n }\n getCaption() {\n return this.attributes.get(\"caption\") || \"\";\n }\n isEqualTo(piece) {\n var _piece$attachment;\n return super.isEqualTo(piece) && this.attachment.id === (piece === null || piece === void 0 || (_piece$attachment = piece.attachment) === null || _piece$attachment === void 0 ? void 0 : _piece$attachment.id);\n }\n toString() {\n return OBJECT_REPLACEMENT_CHARACTER;\n }\n toJSON() {\n const json = super.toJSON(...arguments);\n json.attachment = this.attachment;\n return json;\n }\n getCacheKey() {\n return [super.getCacheKey(...arguments), this.attachment.getCacheKey()].join(\"/\");\n }\n toConsole() {\n return JSON.stringify(this.toString());\n }\n}\n_defineProperty(AttachmentPiece, \"permittedAttributes\", [\"caption\", \"presentation\"]);\nPiece.registerType(\"attachment\", AttachmentPiece);\n\nclass StringPiece extends Piece {\n static fromJSON(pieceJSON) {\n return new this(pieceJSON.string, pieceJSON.attributes);\n }\n constructor(string) {\n super(...arguments);\n this.string = normalizeNewlines(string);\n this.length = this.string.length;\n }\n getValue() {\n return this.string;\n }\n toString() {\n return this.string.toString();\n }\n isBlockBreak() {\n return this.toString() === \"\\n\" && this.getAttribute(\"blockBreak\") === true;\n }\n toJSON() {\n const result = super.toJSON(...arguments);\n result.string = this.string;\n return result;\n }\n\n // Splittable\n\n canBeConsolidatedWith(piece) {\n return piece && this.hasSameConstructorAs(piece) && this.hasSameAttributesAsPiece(piece);\n }\n consolidateWith(piece) {\n return new this.constructor(this.toString() + piece.toString(), this.attributes);\n }\n splitAtOffset(offset) {\n let left, right;\n if (offset === 0) {\n left = null;\n right = this;\n } else if (offset === this.length) {\n left = this;\n right = null;\n } else {\n left = new this.constructor(this.string.slice(0, offset), this.attributes);\n right = new this.constructor(this.string.slice(offset), this.attributes);\n }\n return [left, right];\n }\n toConsole() {\n let {\n string\n } = this;\n if (string.length > 15) {\n string = string.slice(0, 14) + \"\u2026\";\n }\n return JSON.stringify(string.toString());\n }\n}\nPiece.registerType(\"string\", StringPiece);\n\n/* eslint-disable\n prefer-const,\n*/\nclass SplittableList extends TrixObject {\n static box(objects) {\n if (objects instanceof this) {\n return objects;\n } else {\n return new this(objects);\n }\n }\n constructor() {\n let objects = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n super(...arguments);\n this.objects = objects.slice(0);\n this.length = this.objects.length;\n }\n indexOf(object) {\n return this.objects.indexOf(object);\n }\n splice() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return new this.constructor(spliceArray(this.objects, ...args));\n }\n eachObject(callback) {\n return this.objects.map((object, index) => callback(object, index));\n }\n insertObjectAtIndex(object, index) {\n return this.splice(index, 0, object);\n }\n insertSplittableListAtIndex(splittableList, index) {\n return this.splice(index, 0, ...splittableList.objects);\n }\n insertSplittableListAtPosition(splittableList, position) {\n const [objects, index] = this.splitObjectAtPosition(position);\n return new this.constructor(objects).insertSplittableListAtIndex(splittableList, index);\n }\n editObjectAtIndex(index, callback) {\n return this.replaceObjectAtIndex(callback(this.objects[index]), index);\n }\n replaceObjectAtIndex(object, index) {\n return this.splice(index, 1, object);\n }\n removeObjectAtIndex(index) {\n return this.splice(index, 1);\n }\n getObjectAtIndex(index) {\n return this.objects[index];\n }\n getSplittableListInRange(range) {\n const [objects, leftIndex, rightIndex] = this.splitObjectsAtRange(range);\n return new this.constructor(objects.slice(leftIndex, rightIndex + 1));\n }\n selectSplittableList(test) {\n const objects = this.objects.filter(object => test(object));\n return new this.constructor(objects);\n }\n removeObjectsInRange(range) {\n const [objects, leftIndex, rightIndex] = this.splitObjectsAtRange(range);\n return new this.constructor(objects).splice(leftIndex, rightIndex - leftIndex + 1);\n }\n transformObjectsInRange(range, transform) {\n const [objects, leftIndex, rightIndex] = this.splitObjectsAtRange(range);\n const transformedObjects = objects.map((object, index) => leftIndex <= index && index <= rightIndex ? transform(object) : object);\n return new this.constructor(transformedObjects);\n }\n splitObjectsAtRange(range) {\n let rightOuterIndex;\n let [objects, leftInnerIndex, offset] = this.splitObjectAtPosition(startOfRange(range));\n [objects, rightOuterIndex] = new this.constructor(objects).splitObjectAtPosition(endOfRange(range) + offset);\n return [objects, leftInnerIndex, rightOuterIndex - 1];\n }\n getObjectAtPosition(position) {\n const {\n index\n } = this.findIndexAndOffsetAtPosition(position);\n return this.objects[index];\n }\n splitObjectAtPosition(position) {\n let splitIndex, splitOffset;\n const {\n index,\n offset\n } = this.findIndexAndOffsetAtPosition(position);\n const objects = this.objects.slice(0);\n if (index != null) {\n if (offset === 0) {\n splitIndex = index;\n splitOffset = 0;\n } else {\n const object = this.getObjectAtIndex(index);\n const [leftObject, rightObject] = object.splitAtOffset(offset);\n objects.splice(index, 1, leftObject, rightObject);\n splitIndex = index + 1;\n splitOffset = leftObject.getLength() - offset;\n }\n } else {\n splitIndex = objects.length;\n splitOffset = 0;\n }\n return [objects, splitIndex, splitOffset];\n }\n consolidate() {\n const objects = [];\n let pendingObject = this.objects[0];\n this.objects.slice(1).forEach(object => {\n var _pendingObject$canBeC, _pendingObject;\n if ((_pendingObject$canBeC = (_pendingObject = pendingObject).canBeConsolidatedWith) !== null && _pendingObject$canBeC !== void 0 && _pendingObject$canBeC.call(_pendingObject, object)) {\n pendingObject = pendingObject.consolidateWith(object);\n } else {\n objects.push(pendingObject);\n pendingObject = object;\n }\n });\n if (pendingObject) {\n objects.push(pendingObject);\n }\n return new this.constructor(objects);\n }\n consolidateFromIndexToIndex(startIndex, endIndex) {\n const objects = this.objects.slice(0);\n const objectsInRange = objects.slice(startIndex, endIndex + 1);\n const consolidatedInRange = new this.constructor(objectsInRange).consolidate().toArray();\n return this.splice(startIndex, objectsInRange.length, ...consolidatedInRange);\n }\n findIndexAndOffsetAtPosition(position) {\n let index;\n let currentPosition = 0;\n for (index = 0; index < this.objects.length; index++) {\n const object = this.objects[index];\n const nextPosition = currentPosition + object.getLength();\n if (currentPosition <= position && position < nextPosition) {\n return {\n index,\n offset: position - currentPosition\n };\n }\n currentPosition = nextPosition;\n }\n return {\n index: null,\n offset: null\n };\n }\n findPositionAtIndexAndOffset(index, offset) {\n let position = 0;\n for (let currentIndex = 0; currentIndex < this.objects.length; currentIndex++) {\n const object = this.objects[currentIndex];\n if (currentIndex < index) {\n position += object.getLength();\n } else if (currentIndex === index) {\n position += offset;\n break;\n }\n }\n return position;\n }\n getEndPosition() {\n if (this.endPosition == null) {\n this.endPosition = 0;\n this.objects.forEach(object => this.endPosition += object.getLength());\n }\n return this.endPosition;\n }\n toString() {\n return this.objects.join(\"\");\n }\n toArray() {\n return this.objects.slice(0);\n }\n toJSON() {\n return this.toArray();\n }\n isEqualTo(splittableList) {\n return super.isEqualTo(...arguments) || objectArraysAreEqual(this.objects, splittableList === null || splittableList === void 0 ? void 0 : splittableList.objects);\n }\n contentsForInspection() {\n return {\n objects: \"[\".concat(this.objects.map(object => object.inspect()).join(\", \"), \"]\")\n };\n }\n}\nconst objectArraysAreEqual = function (left) {\n let right = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n if (left.length !== right.length) {\n return false;\n }\n let result = true;\n for (let index = 0; index < left.length; index++) {\n const object = left[index];\n if (result && !object.isEqualTo(right[index])) {\n result = false;\n }\n }\n return result;\n};\nconst startOfRange = range => range[0];\nconst endOfRange = range => range[1];\n\nclass Text extends TrixObject {\n static textForAttachmentWithAttributes(attachment, attributes) {\n const piece = new AttachmentPiece(attachment, attributes);\n return new this([piece]);\n }\n static textForStringWithAttributes(string, attributes) {\n const piece = new StringPiece(string, attributes);\n return new this([piece]);\n }\n static fromJSON(textJSON) {\n const pieces = Array.from(textJSON).map(pieceJSON => Piece.fromJSON(pieceJSON));\n return new this(pieces);\n }\n constructor() {\n let pieces = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n super(...arguments);\n const notEmpty = pieces.filter(piece => !piece.isEmpty());\n this.pieceList = new SplittableList(notEmpty);\n }\n copy() {\n return this.copyWithPieceList(this.pieceList);\n }\n copyWithPieceList(pieceList) {\n return new this.constructor(pieceList.consolidate().toArray());\n }\n copyUsingObjectMap(objectMap) {\n const pieces = this.getPieces().map(piece => objectMap.find(piece) || piece);\n return new this.constructor(pieces);\n }\n appendText(text) {\n return this.insertTextAtPosition(text, this.getLength());\n }\n insertTextAtPosition(text, position) {\n return this.copyWithPieceList(this.pieceList.insertSplittableListAtPosition(text.pieceList, position));\n }\n removeTextAtRange(range) {\n return this.copyWithPieceList(this.pieceList.removeObjectsInRange(range));\n }\n replaceTextAtRange(text, range) {\n return this.removeTextAtRange(range).insertTextAtPosition(text, range[0]);\n }\n moveTextFromRangeToPosition(range, position) {\n if (range[0] <= position && position <= range[1]) return;\n const text = this.getTextAtRange(range);\n const length = text.getLength();\n if (range[0] < position) {\n position -= length;\n }\n return this.removeTextAtRange(range).insertTextAtPosition(text, position);\n }\n addAttributeAtRange(attribute, value, range) {\n const attributes = {};\n attributes[attribute] = value;\n return this.addAttributesAtRange(attributes, range);\n }\n addAttributesAtRange(attributes, range) {\n return this.copyWithPieceList(this.pieceList.transformObjectsInRange(range, piece => piece.copyWithAdditionalAttributes(attributes)));\n }\n removeAttributeAtRange(attribute, range) {\n return this.copyWithPieceList(this.pieceList.transformObjectsInRange(range, piece => piece.copyWithoutAttribute(attribute)));\n }\n setAttributesAtRange(attributes, range) {\n return this.copyWithPieceList(this.pieceList.transformObjectsInRange(range, piece => piece.copyWithAttributes(attributes)));\n }\n getAttributesAtPosition(position) {\n var _this$pieceList$getOb;\n return ((_this$pieceList$getOb = this.pieceList.getObjectAtPosition(position)) === null || _this$pieceList$getOb === void 0 ? void 0 : _this$pieceList$getOb.getAttributes()) || {};\n }\n getCommonAttributes() {\n const objects = Array.from(this.pieceList.toArray()).map(piece => piece.getAttributes());\n return Hash.fromCommonAttributesOfObjects(objects).toObject();\n }\n getCommonAttributesAtRange(range) {\n return this.getTextAtRange(range).getCommonAttributes() || {};\n }\n getExpandedRangeForAttributeAtOffset(attributeName, offset) {\n let right;\n let left = right = offset;\n const length = this.getLength();\n while (left > 0 && this.getCommonAttributesAtRange([left - 1, right])[attributeName]) {\n left--;\n }\n while (right < length && this.getCommonAttributesAtRange([offset, right + 1])[attributeName]) {\n right++;\n }\n return [left, right];\n }\n getTextAtRange(range) {\n return this.copyWithPieceList(this.pieceList.getSplittableListInRange(range));\n }\n getStringAtRange(range) {\n return this.pieceList.getSplittableListInRange(range).toString();\n }\n getStringAtPosition(position) {\n return this.getStringAtRange([position, position + 1]);\n }\n startsWithString(string) {\n return this.getStringAtRange([0, string.length]) === string;\n }\n endsWithString(string) {\n const length = this.getLength();\n return this.getStringAtRange([length - string.length, length]) === string;\n }\n getAttachmentPieces() {\n return this.pieceList.toArray().filter(piece => !!piece.attachment);\n }\n getAttachments() {\n return this.getAttachmentPieces().map(piece => piece.attachment);\n }\n getAttachmentAndPositionById(attachmentId) {\n let position = 0;\n for (const piece of this.pieceList.toArray()) {\n var _piece$attachment;\n if (((_piece$attachment = piece.attachment) === null || _piece$attachment === void 0 ? void 0 : _piece$attachment.id) === attachmentId) {\n return {\n attachment: piece.attachment,\n position\n };\n }\n position += piece.length;\n }\n return {\n attachment: null,\n position: null\n };\n }\n getAttachmentById(attachmentId) {\n const {\n attachment\n } = this.getAttachmentAndPositionById(attachmentId);\n return attachment;\n }\n getRangeOfAttachment(attachment) {\n const attachmentAndPosition = this.getAttachmentAndPositionById(attachment.id);\n const position = attachmentAndPosition.position;\n attachment = attachmentAndPosition.attachment;\n if (attachment) {\n return [position, position + 1];\n }\n }\n updateAttributesForAttachment(attributes, attachment) {\n const range = this.getRangeOfAttachment(attachment);\n if (range) {\n return this.addAttributesAtRange(attributes, range);\n } else {\n return this;\n }\n }\n getLength() {\n return this.pieceList.getEndPosition();\n }\n isEmpty() {\n return this.getLength() === 0;\n }\n isEqualTo(text) {\n var _text$pieceList;\n return super.isEqualTo(text) || (text === null || text === void 0 || (_text$pieceList = text.pieceList) === null || _text$pieceList === void 0 ? void 0 : _text$pieceList.isEqualTo(this.pieceList));\n }\n isBlockBreak() {\n return this.getLength() === 1 && this.pieceList.getObjectAtIndex(0).isBlockBreak();\n }\n eachPiece(callback) {\n return this.pieceList.eachObject(callback);\n }\n getPieces() {\n return this.pieceList.toArray();\n }\n getPieceAtPosition(position) {\n return this.pieceList.getObjectAtPosition(position);\n }\n contentsForInspection() {\n return {\n pieceList: this.pieceList.inspect()\n };\n }\n toSerializableText() {\n const pieceList = this.pieceList.selectSplittableList(piece => piece.isSerializable());\n return this.copyWithPieceList(pieceList);\n }\n toString() {\n return this.pieceList.toString();\n }\n toJSON() {\n return this.pieceList.toJSON();\n }\n toConsole() {\n return JSON.stringify(this.pieceList.toArray().map(piece => JSON.parse(piece.toConsole())));\n }\n\n // BIDI\n\n getDirection() {\n return getDirection(this.toString());\n }\n isRTL() {\n return this.getDirection() === \"rtl\";\n }\n}\n\nclass Block extends TrixObject {\n static fromJSON(blockJSON) {\n const text = Text.fromJSON(blockJSON.text);\n return new this(text, blockJSON.attributes, blockJSON.htmlAttributes);\n }\n constructor(text, attributes, htmlAttributes) {\n super(...arguments);\n this.text = applyBlockBreakToText(text || new Text());\n this.attributes = attributes || [];\n this.htmlAttributes = htmlAttributes || {};\n }\n isEmpty() {\n return this.text.isBlockBreak();\n }\n isEqualTo(block) {\n if (super.isEqualTo(block)) return true;\n return this.text.isEqualTo(block === null || block === void 0 ? void 0 : block.text) && arraysAreEqual(this.attributes, block === null || block === void 0 ? void 0 : block.attributes) && objectsAreEqual(this.htmlAttributes, block === null || block === void 0 ? void 0 : block.htmlAttributes);\n }\n copyWithText(text) {\n return new Block(text, this.attributes, this.htmlAttributes);\n }\n copyWithoutText() {\n return this.copyWithText(null);\n }\n copyWithAttributes(attributes) {\n return new Block(this.text, attributes, this.htmlAttributes);\n }\n copyWithoutAttributes() {\n return this.copyWithAttributes(null);\n }\n copyUsingObjectMap(objectMap) {\n const mappedText = objectMap.find(this.text);\n if (mappedText) {\n return this.copyWithText(mappedText);\n } else {\n return this.copyWithText(this.text.copyUsingObjectMap(objectMap));\n }\n }\n addAttribute(attribute) {\n const attributes = this.attributes.concat(expandAttribute(attribute));\n return this.copyWithAttributes(attributes);\n }\n addHTMLAttribute(attribute, value) {\n const htmlAttributes = Object.assign({}, this.htmlAttributes, {\n [attribute]: value\n });\n return new Block(this.text, this.attributes, htmlAttributes);\n }\n removeAttribute(attribute) {\n const {\n listAttribute\n } = getBlockConfig(attribute);\n const attributes = removeLastValue(removeLastValue(this.attributes, attribute), listAttribute);\n return this.copyWithAttributes(attributes);\n }\n removeLastAttribute() {\n return this.removeAttribute(this.getLastAttribute());\n }\n getLastAttribute() {\n return getLastElement(this.attributes);\n }\n getAttributes() {\n return this.attributes.slice(0);\n }\n getAttributeLevel() {\n return this.attributes.length;\n }\n getAttributeAtLevel(level) {\n return this.attributes[level - 1];\n }\n hasAttribute(attributeName) {\n return this.attributes.includes(attributeName);\n }\n hasAttributes() {\n return this.getAttributeLevel() > 0;\n }\n getLastNestableAttribute() {\n return getLastElement(this.getNestableAttributes());\n }\n getNestableAttributes() {\n return this.attributes.filter(attribute => getBlockConfig(attribute).nestable);\n }\n getNestingLevel() {\n return this.getNestableAttributes().length;\n }\n decreaseNestingLevel() {\n const attribute = this.getLastNestableAttribute();\n if (attribute) {\n return this.removeAttribute(attribute);\n } else {\n return this;\n }\n }\n increaseNestingLevel() {\n const attribute = this.getLastNestableAttribute();\n if (attribute) {\n const index = this.attributes.lastIndexOf(attribute);\n const attributes = spliceArray(this.attributes, index + 1, 0, ...expandAttribute(attribute));\n return this.copyWithAttributes(attributes);\n } else {\n return this;\n }\n }\n getListItemAttributes() {\n return this.attributes.filter(attribute => getBlockConfig(attribute).listAttribute);\n }\n isListItem() {\n var _getBlockConfig;\n return (_getBlockConfig = getBlockConfig(this.getLastAttribute())) === null || _getBlockConfig === void 0 ? void 0 : _getBlockConfig.listAttribute;\n }\n isTerminalBlock() {\n var _getBlockConfig2;\n return (_getBlockConfig2 = getBlockConfig(this.getLastAttribute())) === null || _getBlockConfig2 === void 0 ? void 0 : _getBlockConfig2.terminal;\n }\n breaksOnReturn() {\n var _getBlockConfig3;\n return (_getBlockConfig3 = getBlockConfig(this.getLastAttribute())) === null || _getBlockConfig3 === void 0 ? void 0 : _getBlockConfig3.breakOnReturn;\n }\n findLineBreakInDirectionFromPosition(direction, position) {\n const string = this.toString();\n let result;\n switch (direction) {\n case \"forward\":\n result = string.indexOf(\"\\n\", position);\n break;\n case \"backward\":\n result = string.slice(0, position).lastIndexOf(\"\\n\");\n }\n if (result !== -1) {\n return result;\n }\n }\n contentsForInspection() {\n return {\n text: this.text.inspect(),\n attributes: this.attributes\n };\n }\n toString() {\n return this.text.toString();\n }\n toJSON() {\n return {\n text: this.text,\n attributes: this.attributes,\n htmlAttributes: this.htmlAttributes\n };\n }\n\n // BIDI\n\n getDirection() {\n return this.text.getDirection();\n }\n isRTL() {\n return this.text.isRTL();\n }\n\n // Splittable\n\n getLength() {\n return this.text.getLength();\n }\n canBeConsolidatedWith(block) {\n return !this.hasAttributes() && !block.hasAttributes() && this.getDirection() === block.getDirection();\n }\n consolidateWith(block) {\n const newlineText = Text.textForStringWithAttributes(\"\\n\");\n const text = this.getTextWithoutBlockBreak().appendText(newlineText);\n return this.copyWithText(text.appendText(block.text));\n }\n splitAtOffset(offset) {\n let left, right;\n if (offset === 0) {\n left = null;\n right = this;\n } else if (offset === this.getLength()) {\n left = this;\n right = null;\n } else {\n left = this.copyWithText(this.text.getTextAtRange([0, offset]));\n right = this.copyWithText(this.text.getTextAtRange([offset, this.getLength()]));\n }\n return [left, right];\n }\n getBlockBreakPosition() {\n return this.text.getLength() - 1;\n }\n getTextWithoutBlockBreak() {\n if (textEndsInBlockBreak(this.text)) {\n return this.text.getTextAtRange([0, this.getBlockBreakPosition()]);\n } else {\n return this.text.copy();\n }\n }\n\n // Grouping\n\n canBeGrouped(depth) {\n return this.attributes[depth];\n }\n canBeGroupedWith(otherBlock, depth) {\n const otherAttributes = otherBlock.getAttributes();\n const otherAttribute = otherAttributes[depth];\n const attribute = this.attributes[depth];\n return attribute === otherAttribute && !(getBlockConfig(attribute).group === false && !getListAttributeNames().includes(otherAttributes[depth + 1])) && (this.getDirection() === otherBlock.getDirection() || otherBlock.isEmpty());\n }\n}\n\n// Block breaks\n\nconst applyBlockBreakToText = function (text) {\n text = unmarkExistingInnerBlockBreaksInText(text);\n text = addBlockBreakToText(text);\n return text;\n};\nconst unmarkExistingInnerBlockBreaksInText = function (text) {\n let modified = false;\n const pieces = text.getPieces();\n let innerPieces = pieces.slice(0, pieces.length - 1);\n const lastPiece = pieces[pieces.length - 1];\n if (!lastPiece) return text;\n innerPieces = innerPieces.map(piece => {\n if (piece.isBlockBreak()) {\n modified = true;\n return unmarkBlockBreakPiece(piece);\n } else {\n return piece;\n }\n });\n if (modified) {\n return new Text([...innerPieces, lastPiece]);\n } else {\n return text;\n }\n};\nconst blockBreakText = Text.textForStringWithAttributes(\"\\n\", {\n blockBreak: true\n});\nconst addBlockBreakToText = function (text) {\n if (textEndsInBlockBreak(text)) {\n return text;\n } else {\n return text.appendText(blockBreakText);\n }\n};\nconst textEndsInBlockBreak = function (text) {\n const length = text.getLength();\n if (length === 0) {\n return false;\n }\n const endText = text.getTextAtRange([length - 1, length]);\n return endText.isBlockBreak();\n};\nconst unmarkBlockBreakPiece = piece => piece.copyWithoutAttribute(\"blockBreak\");\n\n// Attributes\n\nconst expandAttribute = function (attribute) {\n const {\n listAttribute\n } = getBlockConfig(attribute);\n if (listAttribute) {\n return [listAttribute, attribute];\n } else {\n return [attribute];\n }\n};\n\n// Array helpers\n\nconst getLastElement = array => array.slice(-1)[0];\nconst removeLastValue = function (array, value) {\n const index = array.lastIndexOf(value);\n if (index === -1) {\n return array;\n } else {\n return spliceArray(array, index, 1);\n }\n};\n\nclass Document extends TrixObject {\n static fromJSON(documentJSON) {\n const blocks = Array.from(documentJSON).map(blockJSON => Block.fromJSON(blockJSON));\n return new this(blocks);\n }\n static fromString(string, textAttributes) {\n const text = Text.textForStringWithAttributes(string, textAttributes);\n return new this([new Block(text)]);\n }\n constructor() {\n let blocks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n super(...arguments);\n if (blocks.length === 0) {\n blocks = [new Block()];\n }\n this.blockList = SplittableList.box(blocks);\n }\n isEmpty() {\n const block = this.getBlockAtIndex(0);\n return this.blockList.length === 1 && block.isEmpty() && !block.hasAttributes();\n }\n copy() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const blocks = options.consolidateBlocks ? this.blockList.consolidate().toArray() : this.blockList.toArray();\n return new this.constructor(blocks);\n }\n copyUsingObjectsFromDocument(sourceDocument) {\n const objectMap = new ObjectMap(sourceDocument.getObjects());\n return this.copyUsingObjectMap(objectMap);\n }\n copyUsingObjectMap(objectMap) {\n const blocks = this.getBlocks().map(block => {\n const mappedBlock = objectMap.find(block);\n return mappedBlock || block.copyUsingObjectMap(objectMap);\n });\n return new this.constructor(blocks);\n }\n copyWithBaseBlockAttributes() {\n let blockAttributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n const blocks = this.getBlocks().map(block => {\n const attributes = blockAttributes.concat(block.getAttributes());\n return block.copyWithAttributes(attributes);\n });\n return new this.constructor(blocks);\n }\n replaceBlock(oldBlock, newBlock) {\n const index = this.blockList.indexOf(oldBlock);\n if (index === -1) {\n return this;\n }\n return new this.constructor(this.blockList.replaceObjectAtIndex(newBlock, index));\n }\n insertDocumentAtRange(document, range) {\n const {\n blockList\n } = document;\n range = normalizeRange(range);\n let [position] = range;\n const {\n index,\n offset\n } = this.locationFromPosition(position);\n let result = this;\n const block = this.getBlockAtPosition(position);\n if (rangeIsCollapsed(range) && block.isEmpty() && !block.hasAttributes()) {\n result = new this.constructor(result.blockList.removeObjectAtIndex(index));\n } else if (block.getBlockBreakPosition() === offset) {\n position++;\n }\n result = result.removeTextAtRange(range);\n return new this.constructor(result.blockList.insertSplittableListAtPosition(blockList, position));\n }\n mergeDocumentAtRange(document, range) {\n let formattedDocument, result;\n range = normalizeRange(range);\n const [startPosition] = range;\n const startLocation = this.locationFromPosition(startPosition);\n const blockAttributes = this.getBlockAtIndex(startLocation.index).getAttributes();\n const baseBlockAttributes = document.getBaseBlockAttributes();\n const trailingBlockAttributes = blockAttributes.slice(-baseBlockAttributes.length);\n if (arraysAreEqual(baseBlockAttributes, trailingBlockAttributes)) {\n const leadingBlockAttributes = blockAttributes.slice(0, -baseBlockAttributes.length);\n formattedDocument = document.copyWithBaseBlockAttributes(leadingBlockAttributes);\n } else {\n formattedDocument = document.copy({\n consolidateBlocks: true\n }).copyWithBaseBlockAttributes(blockAttributes);\n }\n const blockCount = formattedDocument.getBlockCount();\n const firstBlock = formattedDocument.getBlockAtIndex(0);\n if (arraysAreEqual(blockAttributes, firstBlock.getAttributes())) {\n const firstText = firstBlock.getTextWithoutBlockBreak();\n result = this.insertTextAtRange(firstText, range);\n if (blockCount > 1) {\n formattedDocument = new this.constructor(formattedDocument.getBlocks().slice(1));\n const position = startPosition + firstText.getLength();\n result = result.insertDocumentAtRange(formattedDocument, position);\n }\n } else {\n result = this.insertDocumentAtRange(formattedDocument, range);\n }\n return result;\n }\n insertTextAtRange(text, range) {\n range = normalizeRange(range);\n const [startPosition] = range;\n const {\n index,\n offset\n } = this.locationFromPosition(startPosition);\n const document = this.removeTextAtRange(range);\n return new this.constructor(document.blockList.editObjectAtIndex(index, block => block.copyWithText(block.text.insertTextAtPosition(text, offset))));\n }\n removeTextAtRange(range) {\n let blocks;\n range = normalizeRange(range);\n const [leftPosition, rightPosition] = range;\n if (rangeIsCollapsed(range)) {\n return this;\n }\n const [leftLocation, rightLocation] = Array.from(this.locationRangeFromRange(range));\n const leftIndex = leftLocation.index;\n const leftOffset = leftLocation.offset;\n const leftBlock = this.getBlockAtIndex(leftIndex);\n const rightIndex = rightLocation.index;\n const rightOffset = rightLocation.offset;\n const rightBlock = this.getBlockAtIndex(rightIndex);\n const removeRightNewline = rightPosition - leftPosition === 1 && leftBlock.getBlockBreakPosition() === leftOffset && rightBlock.getBlockBreakPosition() !== rightOffset && rightBlock.text.getStringAtPosition(rightOffset) === \"\\n\";\n if (removeRightNewline) {\n blocks = this.blockList.editObjectAtIndex(rightIndex, block => block.copyWithText(block.text.removeTextAtRange([rightOffset, rightOffset + 1])));\n } else {\n let block;\n const leftText = leftBlock.text.getTextAtRange([0, leftOffset]);\n const rightText = rightBlock.text.getTextAtRange([rightOffset, rightBlock.getLength()]);\n const text = leftText.appendText(rightText);\n const removingLeftBlock = leftIndex !== rightIndex && leftOffset === 0;\n const useRightBlock = removingLeftBlock && leftBlock.getAttributeLevel() >= rightBlock.getAttributeLevel();\n if (useRightBlock) {\n block = rightBlock.copyWithText(text);\n } else {\n block = leftBlock.copyWithText(text);\n }\n const affectedBlockCount = rightIndex + 1 - leftIndex;\n blocks = this.blockList.splice(leftIndex, affectedBlockCount, block);\n }\n return new this.constructor(blocks);\n }\n moveTextFromRangeToPosition(range, position) {\n let text;\n range = normalizeRange(range);\n const [startPosition, endPosition] = range;\n if (startPosition <= position && position <= endPosition) {\n return this;\n }\n let document = this.getDocumentAtRange(range);\n let result = this.removeTextAtRange(range);\n const movingRightward = startPosition < position;\n if (movingRightward) {\n position -= document.getLength();\n }\n const [firstBlock, ...blocks] = document.getBlocks();\n if (blocks.length === 0) {\n text = firstBlock.getTextWithoutBlockBreak();\n if (movingRightward) {\n position += 1;\n }\n } else {\n text = firstBlock.text;\n }\n result = result.insertTextAtRange(text, position);\n if (blocks.length === 0) {\n return result;\n }\n document = new this.constructor(blocks);\n position += text.getLength();\n return result.insertDocumentAtRange(document, position);\n }\n addAttributeAtRange(attribute, value, range) {\n let {\n blockList\n } = this;\n this.eachBlockAtRange(range, (block, textRange, index) => blockList = blockList.editObjectAtIndex(index, function () {\n if (getBlockConfig(attribute)) {\n return block.addAttribute(attribute, value);\n } else {\n if (textRange[0] === textRange[1]) {\n return block;\n } else {\n return block.copyWithText(block.text.addAttributeAtRange(attribute, value, textRange));\n }\n }\n }));\n return new this.constructor(blockList);\n }\n addAttribute(attribute, value) {\n let {\n blockList\n } = this;\n this.eachBlock((block, index) => blockList = blockList.editObjectAtIndex(index, () => block.addAttribute(attribute, value)));\n return new this.constructor(blockList);\n }\n removeAttributeAtRange(attribute, range) {\n let {\n blockList\n } = this;\n this.eachBlockAtRange(range, function (block, textRange, index) {\n if (getBlockConfig(attribute)) {\n blockList = blockList.editObjectAtIndex(index, () => block.removeAttribute(attribute));\n } else if (textRange[0] !== textRange[1]) {\n blockList = blockList.editObjectAtIndex(index, () => block.copyWithText(block.text.removeAttributeAtRange(attribute, textRange)));\n }\n });\n return new this.constructor(blockList);\n }\n updateAttributesForAttachment(attributes, attachment) {\n const range = this.getRangeOfAttachment(attachment);\n const [startPosition] = Array.from(range);\n const {\n index\n } = this.locationFromPosition(startPosition);\n const text = this.getTextAtIndex(index);\n return new this.constructor(this.blockList.editObjectAtIndex(index, block => block.copyWithText(text.updateAttributesForAttachment(attributes, attachment))));\n }\n removeAttributeForAttachment(attribute, attachment) {\n const range = this.getRangeOfAttachment(attachment);\n return this.removeAttributeAtRange(attribute, range);\n }\n setHTMLAttributeAtPosition(position, name, value) {\n const block = this.getBlockAtPosition(position);\n const updatedBlock = block.addHTMLAttribute(name, value);\n return this.replaceBlock(block, updatedBlock);\n }\n insertBlockBreakAtRange(range) {\n let blocks;\n range = normalizeRange(range);\n const [startPosition] = range;\n const {\n offset\n } = this.locationFromPosition(startPosition);\n const document = this.removeTextAtRange(range);\n if (offset === 0) {\n blocks = [new Block()];\n }\n return new this.constructor(document.blockList.insertSplittableListAtPosition(new SplittableList(blocks), startPosition));\n }\n applyBlockAttributeAtRange(attributeName, value, range) {\n const expanded = this.expandRangeToLineBreaksAndSplitBlocks(range);\n let document = expanded.document;\n range = expanded.range;\n const blockConfig = getBlockConfig(attributeName);\n if (blockConfig.listAttribute) {\n document = document.removeLastListAttributeAtRange(range, {\n exceptAttributeName: attributeName\n });\n const converted = document.convertLineBreaksToBlockBreaksInRange(range);\n document = converted.document;\n range = converted.range;\n } else if (blockConfig.exclusive) {\n document = document.removeBlockAttributesAtRange(range);\n } else if (blockConfig.terminal) {\n document = document.removeLastTerminalAttributeAtRange(range);\n } else {\n document = document.consolidateBlocksAtRange(range);\n }\n return document.addAttributeAtRange(attributeName, value, range);\n }\n removeLastListAttributeAtRange(range) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let {\n blockList\n } = this;\n this.eachBlockAtRange(range, function (block, textRange, index) {\n const lastAttributeName = block.getLastAttribute();\n if (!lastAttributeName) {\n return;\n }\n if (!getBlockConfig(lastAttributeName).listAttribute) {\n return;\n }\n if (lastAttributeName === options.exceptAttributeName) {\n return;\n }\n blockList = blockList.editObjectAtIndex(index, () => block.removeAttribute(lastAttributeName));\n });\n return new this.constructor(blockList);\n }\n removeLastTerminalAttributeAtRange(range) {\n let {\n blockList\n } = this;\n this.eachBlockAtRange(range, function (block, textRange, index) {\n const lastAttributeName = block.getLastAttribute();\n if (!lastAttributeName) {\n return;\n }\n if (!getBlockConfig(lastAttributeName).terminal) {\n return;\n }\n blockList = blockList.editObjectAtIndex(index, () => block.removeAttribute(lastAttributeName));\n });\n return new this.constructor(blockList);\n }\n removeBlockAttributesAtRange(range) {\n let {\n blockList\n } = this;\n this.eachBlockAtRange(range, function (block, textRange, index) {\n if (block.hasAttributes()) {\n blockList = blockList.editObjectAtIndex(index, () => block.copyWithoutAttributes());\n }\n });\n return new this.constructor(blockList);\n }\n expandRangeToLineBreaksAndSplitBlocks(range) {\n let position;\n range = normalizeRange(range);\n let [startPosition, endPosition] = range;\n const startLocation = this.locationFromPosition(startPosition);\n const endLocation = this.locationFromPosition(endPosition);\n let document = this;\n const startBlock = document.getBlockAtIndex(startLocation.index);\n startLocation.offset = startBlock.findLineBreakInDirectionFromPosition(\"backward\", startLocation.offset);\n if (startLocation.offset != null) {\n position = document.positionFromLocation(startLocation);\n document = document.insertBlockBreakAtRange([position, position + 1]);\n endLocation.index += 1;\n endLocation.offset -= document.getBlockAtIndex(startLocation.index).getLength();\n startLocation.index += 1;\n }\n startLocation.offset = 0;\n if (endLocation.offset === 0 && endLocation.index > startLocation.index) {\n endLocation.index -= 1;\n endLocation.offset = document.getBlockAtIndex(endLocation.index).getBlockBreakPosition();\n } else {\n const endBlock = document.getBlockAtIndex(endLocation.index);\n if (endBlock.text.getStringAtRange([endLocation.offset - 1, endLocation.offset]) === \"\\n\") {\n endLocation.offset -= 1;\n } else {\n endLocation.offset = endBlock.findLineBreakInDirectionFromPosition(\"forward\", endLocation.offset);\n }\n if (endLocation.offset !== endBlock.getBlockBreakPosition()) {\n position = document.positionFromLocation(endLocation);\n document = document.insertBlockBreakAtRange([position, position + 1]);\n }\n }\n startPosition = document.positionFromLocation(startLocation);\n endPosition = document.positionFromLocation(endLocation);\n range = normalizeRange([startPosition, endPosition]);\n return {\n document,\n range\n };\n }\n convertLineBreaksToBlockBreaksInRange(range) {\n range = normalizeRange(range);\n let [position] = range;\n const string = this.getStringAtRange(range).slice(0, -1);\n let document = this;\n string.replace(/.*?\\n/g, function (match) {\n position += match.length;\n document = document.insertBlockBreakAtRange([position - 1, position]);\n });\n return {\n document,\n range\n };\n }\n consolidateBlocksAtRange(range) {\n range = normalizeRange(range);\n const [startPosition, endPosition] = range;\n const startIndex = this.locationFromPosition(startPosition).index;\n const endIndex = this.locationFromPosition(endPosition).index;\n return new this.constructor(this.blockList.consolidateFromIndexToIndex(startIndex, endIndex));\n }\n getDocumentAtRange(range) {\n range = normalizeRange(range);\n const blocks = this.blockList.getSplittableListInRange(range).toArray();\n return new this.constructor(blocks);\n }\n getStringAtRange(range) {\n let endIndex;\n const array = range = normalizeRange(range),\n endPosition = array[array.length - 1];\n if (endPosition !== this.getLength()) {\n endIndex = -1;\n }\n return this.getDocumentAtRange(range).toString().slice(0, endIndex);\n }\n getBlockAtIndex(index) {\n return this.blockList.getObjectAtIndex(index);\n }\n getBlockAtPosition(position) {\n const {\n index\n } = this.locationFromPosition(position);\n return this.getBlockAtIndex(index);\n }\n getTextAtIndex(index) {\n var _this$getBlockAtIndex;\n return (_this$getBlockAtIndex = this.getBlockAtIndex(index)) === null || _this$getBlockAtIndex === void 0 ? void 0 : _this$getBlockAtIndex.text;\n }\n getTextAtPosition(position) {\n const {\n index\n } = this.locationFromPosition(position);\n return this.getTextAtIndex(index);\n }\n getPieceAtPosition(position) {\n const {\n index,\n offset\n } = this.locationFromPosition(position);\n return this.getTextAtIndex(index).getPieceAtPosition(offset);\n }\n getCharacterAtPosition(position) {\n const {\n index,\n offset\n } = this.locationFromPosition(position);\n return this.getTextAtIndex(index).getStringAtRange([offset, offset + 1]);\n }\n getLength() {\n return this.blockList.getEndPosition();\n }\n getBlocks() {\n return this.blockList.toArray();\n }\n getBlockCount() {\n return this.blockList.length;\n }\n getEditCount() {\n return this.editCount;\n }\n eachBlock(callback) {\n return this.blockList.eachObject(callback);\n }\n eachBlockAtRange(range, callback) {\n let block, textRange;\n range = normalizeRange(range);\n const [startPosition, endPosition] = range;\n const startLocation = this.locationFromPosition(startPosition);\n const endLocation = this.locationFromPosition(endPosition);\n if (startLocation.index === endLocation.index) {\n block = this.getBlockAtIndex(startLocation.index);\n textRange = [startLocation.offset, endLocation.offset];\n return callback(block, textRange, startLocation.index);\n } else {\n for (let index = startLocation.index; index <= endLocation.index; index++) {\n block = this.getBlockAtIndex(index);\n if (block) {\n switch (index) {\n case startLocation.index:\n textRange = [startLocation.offset, block.text.getLength()];\n break;\n case endLocation.index:\n textRange = [0, endLocation.offset];\n break;\n default:\n textRange = [0, block.text.getLength()];\n }\n callback(block, textRange, index);\n }\n }\n }\n }\n getCommonAttributesAtRange(range) {\n range = normalizeRange(range);\n const [startPosition] = range;\n if (rangeIsCollapsed(range)) {\n return this.getCommonAttributesAtPosition(startPosition);\n } else {\n const textAttributes = [];\n const blockAttributes = [];\n this.eachBlockAtRange(range, function (block, textRange) {\n if (textRange[0] !== textRange[1]) {\n textAttributes.push(block.text.getCommonAttributesAtRange(textRange));\n return blockAttributes.push(attributesForBlock(block));\n }\n });\n return Hash.fromCommonAttributesOfObjects(textAttributes).merge(Hash.fromCommonAttributesOfObjects(blockAttributes)).toObject();\n }\n }\n getCommonAttributesAtPosition(position) {\n let key, value;\n const {\n index,\n offset\n } = this.locationFromPosition(position);\n const block = this.getBlockAtIndex(index);\n if (!block) {\n return {};\n }\n const commonAttributes = attributesForBlock(block);\n const attributes = block.text.getAttributesAtPosition(offset);\n const attributesLeft = block.text.getAttributesAtPosition(offset - 1);\n const inheritableAttributes = Object.keys(text_attributes).filter(key => {\n return text_attributes[key].inheritable;\n });\n for (key in attributesLeft) {\n value = attributesLeft[key];\n if (value === attributes[key] || inheritableAttributes.includes(key)) {\n commonAttributes[key] = value;\n }\n }\n return commonAttributes;\n }\n getRangeOfCommonAttributeAtPosition(attributeName, position) {\n const {\n index,\n offset\n } = this.locationFromPosition(position);\n const text = this.getTextAtIndex(index);\n const [startOffset, endOffset] = Array.from(text.getExpandedRangeForAttributeAtOffset(attributeName, offset));\n const start = this.positionFromLocation({\n index,\n offset: startOffset\n });\n const end = this.positionFromLocation({\n index,\n offset: endOffset\n });\n return normalizeRange([start, end]);\n }\n getBaseBlockAttributes() {\n let baseBlockAttributes = this.getBlockAtIndex(0).getAttributes();\n for (let blockIndex = 1; blockIndex < this.getBlockCount(); blockIndex++) {\n const blockAttributes = this.getBlockAtIndex(blockIndex).getAttributes();\n const lastAttributeIndex = Math.min(baseBlockAttributes.length, blockAttributes.length);\n baseBlockAttributes = (() => {\n const result = [];\n for (let index = 0; index < lastAttributeIndex; index++) {\n if (blockAttributes[index] !== baseBlockAttributes[index]) {\n break;\n }\n result.push(blockAttributes[index]);\n }\n return result;\n })();\n }\n return baseBlockAttributes;\n }\n getAttachmentById(attachmentId) {\n for (const attachment of this.getAttachments()) {\n if (attachment.id === attachmentId) {\n return attachment;\n }\n }\n }\n getAttachmentPieces() {\n let attachmentPieces = [];\n this.blockList.eachObject(_ref => {\n let {\n text\n } = _ref;\n return attachmentPieces = attachmentPieces.concat(text.getAttachmentPieces());\n });\n return attachmentPieces;\n }\n getAttachments() {\n return this.getAttachmentPieces().map(piece => piece.attachment);\n }\n getRangeOfAttachment(attachment) {\n let position = 0;\n const iterable = this.blockList.toArray();\n for (let index = 0; index < iterable.length; index++) {\n const {\n text\n } = iterable[index];\n const textRange = text.getRangeOfAttachment(attachment);\n if (textRange) {\n return normalizeRange([position + textRange[0], position + textRange[1]]);\n }\n position += text.getLength();\n }\n }\n getLocationRangeOfAttachment(attachment) {\n const range = this.getRangeOfAttachment(attachment);\n return this.locationRangeFromRange(range);\n }\n getAttachmentPieceForAttachment(attachment) {\n for (const piece of this.getAttachmentPieces()) {\n if (piece.attachment === attachment) {\n return piece;\n }\n }\n }\n findRangesForBlockAttribute(attributeName) {\n let position = 0;\n const ranges = [];\n this.getBlocks().forEach(block => {\n const length = block.getLength();\n if (block.hasAttribute(attributeName)) {\n ranges.push([position, position + length]);\n }\n position += length;\n });\n return ranges;\n }\n findRangesForTextAttribute(attributeName) {\n let {\n withValue\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let position = 0;\n let range = [];\n const ranges = [];\n const match = function (piece) {\n if (withValue) {\n return piece.getAttribute(attributeName) === withValue;\n } else {\n return piece.hasAttribute(attributeName);\n }\n };\n this.getPieces().forEach(piece => {\n const length = piece.getLength();\n if (match(piece)) {\n if (range[1] === position) {\n range[1] = position + length;\n } else {\n ranges.push(range = [position, position + length]);\n }\n }\n position += length;\n });\n return ranges;\n }\n locationFromPosition(position) {\n const location = this.blockList.findIndexAndOffsetAtPosition(Math.max(0, position));\n if (location.index != null) {\n return location;\n } else {\n const blocks = this.getBlocks();\n return {\n index: blocks.length - 1,\n offset: blocks[blocks.length - 1].getLength()\n };\n }\n }\n positionFromLocation(location) {\n return this.blockList.findPositionAtIndexAndOffset(location.index, location.offset);\n }\n locationRangeFromPosition(position) {\n return normalizeRange(this.locationFromPosition(position));\n }\n locationRangeFromRange(range) {\n range = normalizeRange(range);\n if (!range) return;\n const [startPosition, endPosition] = Array.from(range);\n const startLocation = this.locationFromPosition(startPosition);\n const endLocation = this.locationFromPosition(endPosition);\n return normalizeRange([startLocation, endLocation]);\n }\n rangeFromLocationRange(locationRange) {\n let rightPosition;\n locationRange = normalizeRange(locationRange);\n const leftPosition = this.positionFromLocation(locationRange[0]);\n if (!rangeIsCollapsed(locationRange)) {\n rightPosition = this.positionFromLocation(locationRange[1]);\n }\n return normalizeRange([leftPosition, rightPosition]);\n }\n isEqualTo(document) {\n return this.blockList.isEqualTo(document === null || document === void 0 ? void 0 : document.blockList);\n }\n getTexts() {\n return this.getBlocks().map(block => block.text);\n }\n getPieces() {\n const pieces = [];\n Array.from(this.getTexts()).forEach(text => {\n pieces.push(...Array.from(text.getPieces() || []));\n });\n return pieces;\n }\n getObjects() {\n return this.getBlocks().concat(this.getTexts()).concat(this.getPieces());\n }\n toSerializableDocument() {\n const blocks = [];\n this.blockList.eachObject(block => blocks.push(block.copyWithText(block.text.toSerializableText())));\n return new this.constructor(blocks);\n }\n toString() {\n return this.blockList.toString();\n }\n toJSON() {\n return this.blockList.toJSON();\n }\n toConsole() {\n return JSON.stringify(this.blockList.toArray().map(block => JSON.parse(block.text.toConsole())));\n }\n}\nconst attributesForBlock = function (block) {\n const attributes = {};\n const attributeName = block.getLastAttribute();\n if (attributeName) {\n attributes[attributeName] = true;\n }\n return attributes;\n};\n\n/* eslint-disable\n no-case-declarations,\n no-irregular-whitespace,\n*/\nconst pieceForString = function (string) {\n let attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const type = \"string\";\n string = normalizeSpaces(string);\n return {\n string,\n attributes,\n type\n };\n};\nconst pieceForAttachment = function (attachment) {\n let attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const type = \"attachment\";\n return {\n attachment,\n attributes,\n type\n };\n};\nconst blockForAttributes = function () {\n let attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let htmlAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const text = [];\n return {\n text,\n attributes,\n htmlAttributes\n };\n};\nconst parseTrixDataAttribute = (element, name) => {\n try {\n return JSON.parse(element.getAttribute(\"data-trix-\".concat(name)));\n } catch (error) {\n return {};\n }\n};\nconst getImageDimensions = element => {\n const width = element.getAttribute(\"width\");\n const height = element.getAttribute(\"height\");\n const dimensions = {};\n if (width) {\n dimensions.width = parseInt(width, 10);\n }\n if (height) {\n dimensions.height = parseInt(height, 10);\n }\n return dimensions;\n};\nclass HTMLParser extends BasicObject {\n static parse(html, options) {\n const parser = new this(html, options);\n parser.parse();\n return parser;\n }\n constructor(html) {\n let {\n referenceElement\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super(...arguments);\n this.html = html;\n this.referenceElement = referenceElement;\n this.blocks = [];\n this.blockElements = [];\n this.processedElements = [];\n }\n getDocument() {\n return Document.fromJSON(this.blocks);\n }\n\n // HTML parsing\n\n parse() {\n try {\n this.createHiddenContainer();\n HTMLSanitizer.setHTML(this.containerElement, this.html);\n const walker = walkTree(this.containerElement, {\n usingFilter: nodeFilter\n });\n while (walker.nextNode()) {\n this.processNode(walker.currentNode);\n }\n return this.translateBlockElementMarginsToNewlines();\n } finally {\n this.removeHiddenContainer();\n }\n }\n createHiddenContainer() {\n if (this.referenceElement) {\n this.containerElement = this.referenceElement.cloneNode(false);\n this.containerElement.removeAttribute(\"id\");\n this.containerElement.setAttribute(\"data-trix-internal\", \"\");\n this.containerElement.style.display = \"none\";\n return this.referenceElement.parentNode.insertBefore(this.containerElement, this.referenceElement.nextSibling);\n } else {\n this.containerElement = makeElement({\n tagName: \"div\",\n style: {\n display: \"none\"\n }\n });\n return document.body.appendChild(this.containerElement);\n }\n }\n removeHiddenContainer() {\n return removeNode(this.containerElement);\n }\n processNode(node) {\n switch (node.nodeType) {\n case Node.TEXT_NODE:\n if (!this.isInsignificantTextNode(node)) {\n this.appendBlockForTextNode(node);\n return this.processTextNode(node);\n }\n break;\n case Node.ELEMENT_NODE:\n this.appendBlockForElement(node);\n return this.processElement(node);\n }\n }\n appendBlockForTextNode(node) {\n const element = node.parentNode;\n if (element === this.currentBlockElement && this.isBlockElement(node.previousSibling)) {\n return this.appendStringWithAttributes(\"\\n\");\n } else if (element === this.containerElement || this.isBlockElement(element)) {\n var _this$currentBlock;\n const attributes = this.getBlockAttributes(element);\n const htmlAttributes = this.getBlockHTMLAttributes(element);\n if (!arraysAreEqual(attributes, (_this$currentBlock = this.currentBlock) === null || _this$currentBlock === void 0 ? void 0 : _this$currentBlock.attributes)) {\n this.currentBlock = this.appendBlockForAttributesWithElement(attributes, element, htmlAttributes);\n this.currentBlockElement = element;\n }\n }\n }\n appendBlockForElement(element) {\n const elementIsBlockElement = this.isBlockElement(element);\n const currentBlockContainsElement = elementContainsNode(this.currentBlockElement, element);\n if (elementIsBlockElement && !this.isBlockElement(element.firstChild)) {\n if (!this.isInsignificantTextNode(element.firstChild) || !this.isBlockElement(element.firstElementChild)) {\n const attributes = this.getBlockAttributes(element);\n const htmlAttributes = this.getBlockHTMLAttributes(element);\n if (element.firstChild) {\n if (!(currentBlockContainsElement && arraysAreEqual(attributes, this.currentBlock.attributes))) {\n this.currentBlock = this.appendBlockForAttributesWithElement(attributes, element, htmlAttributes);\n this.currentBlockElement = element;\n } else {\n return this.appendStringWithAttributes(\"\\n\");\n }\n }\n }\n } else if (this.currentBlockElement && !currentBlockContainsElement && !elementIsBlockElement) {\n const parentBlockElement = this.findParentBlockElement(element);\n if (parentBlockElement) {\n return this.appendBlockForElement(parentBlockElement);\n } else {\n this.currentBlock = this.appendEmptyBlock();\n this.currentBlockElement = null;\n }\n }\n }\n findParentBlockElement(element) {\n let {\n parentElement\n } = element;\n while (parentElement && parentElement !== this.containerElement) {\n if (this.isBlockElement(parentElement) && this.blockElements.includes(parentElement)) {\n return parentElement;\n } else {\n parentElement = parentElement.parentElement;\n }\n }\n return null;\n }\n processTextNode(node) {\n let string = node.data;\n if (!elementCanDisplayPreformattedText(node.parentNode)) {\n var _node$previousSibling;\n string = squishBreakableWhitespace(string);\n if (stringEndsWithWhitespace((_node$previousSibling = node.previousSibling) === null || _node$previousSibling === void 0 ? void 0 : _node$previousSibling.textContent)) {\n string = leftTrimBreakableWhitespace(string);\n }\n }\n return this.appendStringWithAttributes(string, this.getTextAttributes(node.parentNode));\n }\n processElement(element) {\n let attributes;\n if (nodeIsAttachmentElement(element)) {\n attributes = parseTrixDataAttribute(element, \"attachment\");\n if (Object.keys(attributes).length) {\n const textAttributes = this.getTextAttributes(element);\n this.appendAttachmentWithAttributes(attributes, textAttributes);\n // We have everything we need so avoid processing inner nodes\n element.innerHTML = \"\";\n }\n return this.processedElements.push(element);\n } else {\n switch (tagName(element)) {\n case \"br\":\n if (!this.isExtraBR(element) && !this.isBlockElement(element.nextSibling)) {\n this.appendStringWithAttributes(\"\\n\", this.getTextAttributes(element));\n }\n return this.processedElements.push(element);\n case \"img\":\n attributes = {\n url: element.getAttribute(\"src\"),\n contentType: \"image\"\n };\n const object = getImageDimensions(element);\n for (const key in object) {\n const value = object[key];\n attributes[key] = value;\n }\n this.appendAttachmentWithAttributes(attributes, this.getTextAttributes(element));\n return this.processedElements.push(element);\n case \"tr\":\n if (this.needsTableSeparator(element)) {\n return this.appendStringWithAttributes(parser.tableRowSeparator);\n }\n break;\n case \"td\":\n if (this.needsTableSeparator(element)) {\n return this.appendStringWithAttributes(parser.tableCellSeparator);\n }\n break;\n }\n }\n }\n\n // Document construction\n\n appendBlockForAttributesWithElement(attributes, element) {\n let htmlAttributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.blockElements.push(element);\n const block = blockForAttributes(attributes, htmlAttributes);\n this.blocks.push(block);\n return block;\n }\n appendEmptyBlock() {\n return this.appendBlockForAttributesWithElement([], null);\n }\n appendStringWithAttributes(string, attributes) {\n return this.appendPiece(pieceForString(string, attributes));\n }\n appendAttachmentWithAttributes(attachment, attributes) {\n return this.appendPiece(pieceForAttachment(attachment, attributes));\n }\n appendPiece(piece) {\n if (this.blocks.length === 0) {\n this.appendEmptyBlock();\n }\n return this.blocks[this.blocks.length - 1].text.push(piece);\n }\n appendStringToTextAtIndex(string, index) {\n const {\n text\n } = this.blocks[index];\n const piece = text[text.length - 1];\n if ((piece === null || piece === void 0 ? void 0 : piece.type) === \"string\") {\n piece.string += string;\n } else {\n return text.push(pieceForString(string));\n }\n }\n prependStringToTextAtIndex(string, index) {\n const {\n text\n } = this.blocks[index];\n const piece = text[0];\n if ((piece === null || piece === void 0 ? void 0 : piece.type) === \"string\") {\n piece.string = string + piece.string;\n } else {\n return text.unshift(pieceForString(string));\n }\n }\n\n // Attribute parsing\n\n getTextAttributes(element) {\n let value;\n const attributes = {};\n for (const attribute in text_attributes) {\n const configAttr = text_attributes[attribute];\n if (configAttr.tagName && findClosestElementFromNode(element, {\n matchingSelector: configAttr.tagName,\n untilNode: this.containerElement\n })) {\n attributes[attribute] = true;\n } else if (configAttr.parser) {\n value = configAttr.parser(element);\n if (value) {\n let attributeInheritedFromBlock = false;\n for (const blockElement of this.findBlockElementAncestors(element)) {\n if (configAttr.parser(blockElement) === value) {\n attributeInheritedFromBlock = true;\n break;\n }\n }\n if (!attributeInheritedFromBlock) {\n attributes[attribute] = value;\n }\n }\n } else if (configAttr.styleProperty) {\n value = element.style[configAttr.styleProperty];\n if (value) {\n attributes[attribute] = value;\n }\n }\n }\n if (nodeIsAttachmentElement(element)) {\n const object = parseTrixDataAttribute(element, \"attributes\");\n for (const key in object) {\n value = object[key];\n attributes[key] = value;\n }\n }\n return attributes;\n }\n getBlockAttributes(element) {\n const attributes$1 = [];\n while (element && element !== this.containerElement) {\n for (const attribute in attributes) {\n const attrConfig = attributes[attribute];\n if (attrConfig.parse !== false) {\n if (tagName(element) === attrConfig.tagName) {\n var _attrConfig$test;\n if ((_attrConfig$test = attrConfig.test) !== null && _attrConfig$test !== void 0 && _attrConfig$test.call(attrConfig, element) || !attrConfig.test) {\n attributes$1.push(attribute);\n if (attrConfig.listAttribute) {\n attributes$1.push(attrConfig.listAttribute);\n }\n }\n }\n }\n }\n element = element.parentNode;\n }\n return attributes$1.reverse();\n }\n getBlockHTMLAttributes(element) {\n const attributes$1 = {};\n const blockConfig = Object.values(attributes).find(settings => settings.tagName === tagName(element));\n const allowedAttributes = (blockConfig === null || blockConfig === void 0 ? void 0 : blockConfig.htmlAttributes) || [];\n allowedAttributes.forEach(attribute => {\n if (element.hasAttribute(attribute)) {\n attributes$1[attribute] = element.getAttribute(attribute);\n }\n });\n return attributes$1;\n }\n findBlockElementAncestors(element) {\n const ancestors = [];\n while (element && element !== this.containerElement) {\n const tag = tagName(element);\n if (getBlockTagNames().includes(tag)) {\n ancestors.push(element);\n }\n element = element.parentNode;\n }\n return ancestors;\n }\n\n // Element inspection\n\n isBlockElement(element) {\n if ((element === null || element === void 0 ? void 0 : element.nodeType) !== Node.ELEMENT_NODE) return;\n if (nodeIsAttachmentElement(element)) return;\n if (findClosestElementFromNode(element, {\n matchingSelector: \"td\",\n untilNode: this.containerElement\n })) return;\n return getBlockTagNames().includes(tagName(element)) || window.getComputedStyle(element).display === \"block\";\n }\n isInsignificantTextNode(node) {\n if ((node === null || node === void 0 ? void 0 : node.nodeType) !== Node.TEXT_NODE) return;\n if (!stringIsAllBreakableWhitespace(node.data)) return;\n const {\n parentNode,\n previousSibling,\n nextSibling\n } = node;\n if (nodeEndsWithNonWhitespace(parentNode.previousSibling) && !this.isBlockElement(parentNode.previousSibling)) return;\n if (elementCanDisplayPreformattedText(parentNode)) return;\n return !previousSibling || this.isBlockElement(previousSibling) || !nextSibling || this.isBlockElement(nextSibling);\n }\n isExtraBR(element) {\n return tagName(element) === \"br\" && this.isBlockElement(element.parentNode) && element.parentNode.lastChild === element;\n }\n needsTableSeparator(element) {\n if (parser.removeBlankTableCells) {\n var _element$previousSibl;\n const content = (_element$previousSibl = element.previousSibling) === null || _element$previousSibl === void 0 ? void 0 : _element$previousSibl.textContent;\n return content && /\\S/.test(content);\n } else {\n return element.previousSibling;\n }\n }\n\n // Margin translation\n\n translateBlockElementMarginsToNewlines() {\n const defaultMargin = this.getMarginOfDefaultBlockElement();\n for (let index = 0; index < this.blocks.length; index++) {\n const margin = this.getMarginOfBlockElementAtIndex(index);\n if (margin) {\n if (margin.top > defaultMargin.top * 2) {\n this.prependStringToTextAtIndex(\"\\n\", index);\n }\n if (margin.bottom > defaultMargin.bottom * 2) {\n this.appendStringToTextAtIndex(\"\\n\", index);\n }\n }\n }\n }\n getMarginOfBlockElementAtIndex(index) {\n const element = this.blockElements[index];\n if (element) {\n if (element.textContent) {\n if (!getBlockTagNames().includes(tagName(element)) && !this.processedElements.includes(element)) {\n return getBlockElementMargin(element);\n }\n }\n }\n }\n getMarginOfDefaultBlockElement() {\n const element = makeElement(attributes.default.tagName);\n this.containerElement.appendChild(element);\n return getBlockElementMargin(element);\n }\n}\n\n//\u00A0Helpers\n\nconst elementCanDisplayPreformattedText = function (element) {\n const {\n whiteSpace\n } = window.getComputedStyle(element);\n return [\"pre\", \"pre-wrap\", \"pre-line\"].includes(whiteSpace);\n};\nconst nodeEndsWithNonWhitespace = node => node && !stringEndsWithWhitespace(node.textContent);\nconst getBlockElementMargin = function (element) {\n const style = window.getComputedStyle(element);\n if (style.display === \"block\") {\n return {\n top: parseInt(style.marginTop),\n bottom: parseInt(style.marginBottom)\n };\n }\n};\nconst nodeFilter = function (node) {\n if (tagName(node) === \"style\") {\n return NodeFilter.FILTER_REJECT;\n } else {\n return NodeFilter.FILTER_ACCEPT;\n }\n};\n\n// Whitespace\n\nconst leftTrimBreakableWhitespace = string => string.replace(new RegExp(\"^\".concat(breakableWhitespacePattern.source, \"+\")), \"\");\nconst stringIsAllBreakableWhitespace = string => new RegExp(\"^\".concat(breakableWhitespacePattern.source, \"*$\")).test(string);\nconst stringEndsWithWhitespace = string => /\\s$/.test(string);\n\n/* eslint-disable\n no-empty,\n*/\nconst unserializableElementSelector = \"[data-trix-serialize=false]\";\nconst unserializableAttributeNames = [\"contenteditable\", \"data-trix-id\", \"data-trix-store-key\", \"data-trix-mutable\", \"data-trix-placeholder\", \"tabindex\"];\nconst serializedAttributesAttribute = \"data-trix-serialized-attributes\";\nconst serializedAttributesSelector = \"[\".concat(serializedAttributesAttribute, \"]\");\nconst blockCommentPattern = new RegExp(\"\", \"g\");\nconst serializers = {\n \"application/json\": function (serializable) {\n let document;\n if (serializable instanceof Document) {\n document = serializable;\n } else if (serializable instanceof HTMLElement) {\n document = HTMLParser.parse(serializable.innerHTML).getDocument();\n } else {\n throw new Error(\"unserializable object\");\n }\n return document.toSerializableDocument().toJSONString();\n },\n \"text/html\": function (serializable) {\n let element;\n if (serializable instanceof Document) {\n element = DocumentView.render(serializable);\n } else if (serializable instanceof HTMLElement) {\n element = serializable.cloneNode(true);\n } else {\n throw new Error(\"unserializable object\");\n }\n\n // Remove unserializable elements\n Array.from(element.querySelectorAll(unserializableElementSelector)).forEach(el => {\n removeNode(el);\n });\n\n // Remove unserializable attributes\n unserializableAttributeNames.forEach(attribute => {\n Array.from(element.querySelectorAll(\"[\".concat(attribute, \"]\"))).forEach(el => {\n el.removeAttribute(attribute);\n });\n });\n\n // Rewrite elements with serialized attribute overrides\n Array.from(element.querySelectorAll(serializedAttributesSelector)).forEach(el => {\n try {\n const attributes = JSON.parse(el.getAttribute(serializedAttributesAttribute));\n el.removeAttribute(serializedAttributesAttribute);\n for (const name in attributes) {\n const value = attributes[name];\n el.setAttribute(name, value);\n }\n } catch (error) {}\n });\n return element.innerHTML.replace(blockCommentPattern, \"\");\n }\n};\nconst deserializers = {\n \"application/json\": function (string) {\n return Document.fromJSONString(string);\n },\n \"text/html\": function (string) {\n return HTMLParser.parse(string).getDocument();\n }\n};\nconst serializeToContentType = function (serializable, contentType) {\n const serializer = serializers[contentType];\n if (serializer) {\n return serializer(serializable);\n } else {\n throw new Error(\"unknown content type: \".concat(contentType));\n }\n};\nconst deserializeFromContentType = function (string, contentType) {\n const deserializer = deserializers[contentType];\n if (deserializer) {\n return deserializer(string);\n } else {\n throw new Error(\"unknown content type: \".concat(contentType));\n }\n};\n\nvar core = /*#__PURE__*/Object.freeze({\n __proto__: null\n});\n\nclass ManagedAttachment extends BasicObject {\n constructor(attachmentManager, attachment) {\n super(...arguments);\n this.attachmentManager = attachmentManager;\n this.attachment = attachment;\n this.id = this.attachment.id;\n this.file = this.attachment.file;\n }\n remove() {\n return this.attachmentManager.requestRemovalOfAttachment(this.attachment);\n }\n}\nManagedAttachment.proxyMethod(\"attachment.getAttribute\");\nManagedAttachment.proxyMethod(\"attachment.hasAttribute\");\nManagedAttachment.proxyMethod(\"attachment.setAttribute\");\nManagedAttachment.proxyMethod(\"attachment.getAttributes\");\nManagedAttachment.proxyMethod(\"attachment.setAttributes\");\nManagedAttachment.proxyMethod(\"attachment.isPending\");\nManagedAttachment.proxyMethod(\"attachment.isPreviewable\");\nManagedAttachment.proxyMethod(\"attachment.getURL\");\nManagedAttachment.proxyMethod(\"attachment.getHref\");\nManagedAttachment.proxyMethod(\"attachment.getFilename\");\nManagedAttachment.proxyMethod(\"attachment.getFilesize\");\nManagedAttachment.proxyMethod(\"attachment.getFormattedFilesize\");\nManagedAttachment.proxyMethod(\"attachment.getExtension\");\nManagedAttachment.proxyMethod(\"attachment.getContentType\");\nManagedAttachment.proxyMethod(\"attachment.getFile\");\nManagedAttachment.proxyMethod(\"attachment.setFile\");\nManagedAttachment.proxyMethod(\"attachment.releaseFile\");\nManagedAttachment.proxyMethod(\"attachment.getUploadProgress\");\nManagedAttachment.proxyMethod(\"attachment.setUploadProgress\");\n\nclass AttachmentManager extends BasicObject {\n constructor() {\n let attachments = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n super(...arguments);\n this.managedAttachments = {};\n Array.from(attachments).forEach(attachment => {\n this.manageAttachment(attachment);\n });\n }\n getAttachments() {\n const result = [];\n for (const id in this.managedAttachments) {\n const attachment = this.managedAttachments[id];\n result.push(attachment);\n }\n return result;\n }\n manageAttachment(attachment) {\n if (!this.managedAttachments[attachment.id]) {\n this.managedAttachments[attachment.id] = new ManagedAttachment(this, attachment);\n }\n return this.managedAttachments[attachment.id];\n }\n attachmentIsManaged(attachment) {\n return attachment.id in this.managedAttachments;\n }\n requestRemovalOfAttachment(attachment) {\n if (this.attachmentIsManaged(attachment)) {\n var _this$delegate, _this$delegate$attach;\n return (_this$delegate = this.delegate) === null || _this$delegate === void 0 || (_this$delegate$attach = _this$delegate.attachmentManagerDidRequestRemovalOfAttachment) === null || _this$delegate$attach === void 0 ? void 0 : _this$delegate$attach.call(_this$delegate, attachment);\n }\n }\n unmanageAttachment(attachment) {\n const managedAttachment = this.managedAttachments[attachment.id];\n delete this.managedAttachments[attachment.id];\n return managedAttachment;\n }\n}\n\nclass LineBreakInsertion {\n constructor(composition) {\n this.composition = composition;\n this.document = this.composition.document;\n const selectedRange = this.composition.getSelectedRange();\n this.startPosition = selectedRange[0];\n this.endPosition = selectedRange[1];\n this.startLocation = this.document.locationFromPosition(this.startPosition);\n this.endLocation = this.document.locationFromPosition(this.endPosition);\n this.block = this.document.getBlockAtIndex(this.endLocation.index);\n this.breaksOnReturn = this.block.breaksOnReturn();\n this.previousCharacter = this.block.text.getStringAtPosition(this.endLocation.offset - 1);\n this.nextCharacter = this.block.text.getStringAtPosition(this.endLocation.offset);\n }\n shouldInsertBlockBreak() {\n if (this.block.hasAttributes() && this.block.isListItem() && !this.block.isEmpty()) {\n return this.startLocation.offset !== 0;\n } else {\n return this.breaksOnReturn && this.nextCharacter !== \"\\n\";\n }\n }\n shouldBreakFormattedBlock() {\n return this.block.hasAttributes() && !this.block.isListItem() && (this.breaksOnReturn && this.nextCharacter === \"\\n\" || this.previousCharacter === \"\\n\");\n }\n shouldDecreaseListLevel() {\n return this.block.hasAttributes() && this.block.isListItem() && this.block.isEmpty();\n }\n shouldPrependListItem() {\n return this.block.isListItem() && this.startLocation.offset === 0 && !this.block.isEmpty();\n }\n shouldRemoveLastBlockAttribute() {\n return this.block.hasAttributes() && !this.block.isListItem() && this.block.isEmpty();\n }\n}\n\nconst PLACEHOLDER = \" \";\nclass Composition extends BasicObject {\n constructor() {\n super(...arguments);\n this.document = new Document();\n this.attachments = [];\n this.currentAttributes = {};\n this.revision = 0;\n }\n setDocument(document) {\n if (!document.isEqualTo(this.document)) {\n var _this$delegate, _this$delegate$compos;\n this.document = document;\n this.refreshAttachments();\n this.revision++;\n return (_this$delegate = this.delegate) === null || _this$delegate === void 0 || (_this$delegate$compos = _this$delegate.compositionDidChangeDocument) === null || _this$delegate$compos === void 0 ? void 0 : _this$delegate$compos.call(_this$delegate, document);\n }\n }\n\n // Snapshots\n\n getSnapshot() {\n return {\n document: this.document,\n selectedRange: this.getSelectedRange()\n };\n }\n loadSnapshot(_ref) {\n var _this$delegate2, _this$delegate2$compo, _this$delegate3, _this$delegate3$compo;\n let {\n document,\n selectedRange\n } = _ref;\n (_this$delegate2 = this.delegate) === null || _this$delegate2 === void 0 || (_this$delegate2$compo = _this$delegate2.compositionWillLoadSnapshot) === null || _this$delegate2$compo === void 0 || _this$delegate2$compo.call(_this$delegate2);\n this.setDocument(document != null ? document : new Document());\n this.setSelection(selectedRange != null ? selectedRange : [0, 0]);\n return (_this$delegate3 = this.delegate) === null || _this$delegate3 === void 0 || (_this$delegate3$compo = _this$delegate3.compositionDidLoadSnapshot) === null || _this$delegate3$compo === void 0 ? void 0 : _this$delegate3$compo.call(_this$delegate3);\n }\n\n // Responder protocol\n\n insertText(text) {\n let {\n updatePosition\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n updatePosition: true\n };\n const selectedRange = this.getSelectedRange();\n this.setDocument(this.document.insertTextAtRange(text, selectedRange));\n const startPosition = selectedRange[0];\n const endPosition = startPosition + text.getLength();\n if (updatePosition) {\n this.setSelection(endPosition);\n }\n return this.notifyDelegateOfInsertionAtRange([startPosition, endPosition]);\n }\n insertBlock() {\n let block = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Block();\n const document = new Document([block]);\n return this.insertDocument(document);\n }\n insertDocument() {\n let document = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Document();\n const selectedRange = this.getSelectedRange();\n this.setDocument(this.document.insertDocumentAtRange(document, selectedRange));\n const startPosition = selectedRange[0];\n const endPosition = startPosition + document.getLength();\n this.setSelection(endPosition);\n return this.notifyDelegateOfInsertionAtRange([startPosition, endPosition]);\n }\n insertString(string, options) {\n const attributes = this.getCurrentTextAttributes();\n const text = Text.textForStringWithAttributes(string, attributes);\n return this.insertText(text, options);\n }\n insertBlockBreak() {\n const selectedRange = this.getSelectedRange();\n this.setDocument(this.document.insertBlockBreakAtRange(selectedRange));\n const startPosition = selectedRange[0];\n const endPosition = startPosition + 1;\n this.setSelection(endPosition);\n return this.notifyDelegateOfInsertionAtRange([startPosition, endPosition]);\n }\n insertLineBreak() {\n const insertion = new LineBreakInsertion(this);\n if (insertion.shouldDecreaseListLevel()) {\n this.decreaseListLevel();\n return this.setSelection(insertion.startPosition);\n } else if (insertion.shouldPrependListItem()) {\n const document = new Document([insertion.block.copyWithoutText()]);\n return this.insertDocument(document);\n } else if (insertion.shouldInsertBlockBreak()) {\n return this.insertBlockBreak();\n } else if (insertion.shouldRemoveLastBlockAttribute()) {\n return this.removeLastBlockAttribute();\n } else if (insertion.shouldBreakFormattedBlock()) {\n return this.breakFormattedBlock(insertion);\n } else {\n return this.insertString(\"\\n\");\n }\n }\n insertHTML(html) {\n const document = HTMLParser.parse(html).getDocument();\n const selectedRange = this.getSelectedRange();\n this.setDocument(this.document.mergeDocumentAtRange(document, selectedRange));\n const startPosition = selectedRange[0];\n const endPosition = startPosition + document.getLength() - 1;\n this.setSelection(endPosition);\n return this.notifyDelegateOfInsertionAtRange([startPosition, endPosition]);\n }\n replaceHTML(html) {\n const document = HTMLParser.parse(html).getDocument().copyUsingObjectsFromDocument(this.document);\n const locationRange = this.getLocationRange({\n strict: false\n });\n const selectedRange = this.document.rangeFromLocationRange(locationRange);\n this.setDocument(document);\n return this.setSelection(selectedRange);\n }\n insertFile(file) {\n return this.insertFiles([file]);\n }\n insertFiles(files) {\n const attachments = [];\n Array.from(files).forEach(file => {\n var _this$delegate4;\n if ((_this$delegate4 = this.delegate) !== null && _this$delegate4 !== void 0 && _this$delegate4.compositionShouldAcceptFile(file)) {\n const attachment = Attachment.attachmentForFile(file);\n attachments.push(attachment);\n }\n });\n return this.insertAttachments(attachments);\n }\n insertAttachment(attachment) {\n return this.insertAttachments([attachment]);\n }\n insertAttachments(attachments$1) {\n let text = new Text();\n Array.from(attachments$1).forEach(attachment => {\n var _config$attachments$t;\n const type = attachment.getType();\n const presentation = (_config$attachments$t = attachments[type]) === null || _config$attachments$t === void 0 ? void 0 : _config$attachments$t.presentation;\n const attributes = this.getCurrentTextAttributes();\n if (presentation) {\n attributes.presentation = presentation;\n }\n const attachmentText = Text.textForAttachmentWithAttributes(attachment, attributes);\n text = text.appendText(attachmentText);\n });\n return this.insertText(text);\n }\n shouldManageDeletingInDirection(direction) {\n const locationRange = this.getLocationRange();\n if (rangeIsCollapsed(locationRange)) {\n if (direction === \"backward\" && locationRange[0].offset === 0) {\n return true;\n }\n if (this.shouldManageMovingCursorInDirection(direction)) {\n return true;\n }\n } else {\n if (locationRange[0].index !== locationRange[1].index) {\n return true;\n }\n }\n return false;\n }\n deleteInDirection(direction) {\n let {\n length\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let attachment, deletingIntoPreviousBlock, selectionSpansBlocks;\n const locationRange = this.getLocationRange();\n let range = this.getSelectedRange();\n const selectionIsCollapsed = rangeIsCollapsed(range);\n if (selectionIsCollapsed) {\n deletingIntoPreviousBlock = direction === \"backward\" && locationRange[0].offset === 0;\n } else {\n selectionSpansBlocks = locationRange[0].index !== locationRange[1].index;\n }\n if (deletingIntoPreviousBlock) {\n if (this.canDecreaseBlockAttributeLevel()) {\n const block = this.getBlock();\n if (block.isListItem()) {\n this.decreaseListLevel();\n } else {\n this.decreaseBlockAttributeLevel();\n }\n this.setSelection(range[0]);\n if (block.isEmpty()) {\n return false;\n }\n }\n }\n if (selectionIsCollapsed) {\n range = this.getExpandedRangeInDirection(direction, {\n length\n });\n if (direction === \"backward\") {\n attachment = this.getAttachmentAtRange(range);\n }\n }\n if (attachment) {\n this.editAttachment(attachment);\n return false;\n } else {\n this.setDocument(this.document.removeTextAtRange(range));\n this.setSelection(range[0]);\n if (deletingIntoPreviousBlock || selectionSpansBlocks) {\n return false;\n }\n }\n }\n moveTextFromRange(range) {\n const [position] = Array.from(this.getSelectedRange());\n this.setDocument(this.document.moveTextFromRangeToPosition(range, position));\n return this.setSelection(position);\n }\n removeAttachment(attachment) {\n const range = this.document.getRangeOfAttachment(attachment);\n if (range) {\n this.stopEditingAttachment();\n this.setDocument(this.document.removeTextAtRange(range));\n return this.setSelection(range[0]);\n }\n }\n removeLastBlockAttribute() {\n const [startPosition, endPosition] = Array.from(this.getSelectedRange());\n const block = this.document.getBlockAtPosition(endPosition);\n this.removeCurrentAttribute(block.getLastAttribute());\n return this.setSelection(startPosition);\n }\n insertPlaceholder() {\n this.placeholderPosition = this.getPosition();\n return this.insertString(PLACEHOLDER);\n }\n selectPlaceholder() {\n if (this.placeholderPosition != null) {\n this.setSelectedRange([this.placeholderPosition, this.placeholderPosition + PLACEHOLDER.length]);\n return this.getSelectedRange();\n }\n }\n forgetPlaceholder() {\n this.placeholderPosition = null;\n }\n\n // Current attributes\n\n hasCurrentAttribute(attributeName) {\n const value = this.currentAttributes[attributeName];\n return value != null && value !== false;\n }\n toggleCurrentAttribute(attributeName) {\n const value = !this.currentAttributes[attributeName];\n if (value) {\n return this.setCurrentAttribute(attributeName, value);\n } else {\n return this.removeCurrentAttribute(attributeName);\n }\n }\n canSetCurrentAttribute(attributeName) {\n if (getBlockConfig(attributeName)) {\n return this.canSetCurrentBlockAttribute(attributeName);\n } else {\n return this.canSetCurrentTextAttribute(attributeName);\n }\n }\n canSetCurrentTextAttribute(attributeName) {\n const document = this.getSelectedDocument();\n if (!document) return;\n for (const attachment of Array.from(document.getAttachments())) {\n if (!attachment.hasContent()) {\n return false;\n }\n }\n return true;\n }\n canSetCurrentBlockAttribute(attributeName) {\n const block = this.getBlock();\n if (!block) return;\n return !block.isTerminalBlock();\n }\n setCurrentAttribute(attributeName, value) {\n if (getBlockConfig(attributeName)) {\n return this.setBlockAttribute(attributeName, value);\n } else {\n this.setTextAttribute(attributeName, value);\n this.currentAttributes[attributeName] = value;\n return this.notifyDelegateOfCurrentAttributesChange();\n }\n }\n setHTMLAtributeAtPosition(position, attributeName, value) {\n var _getBlockConfig;\n const block = this.document.getBlockAtPosition(position);\n const allowedHTMLAttributes = (_getBlockConfig = getBlockConfig(block.getLastAttribute())) === null || _getBlockConfig === void 0 ? void 0 : _getBlockConfig.htmlAttributes;\n if (block && allowedHTMLAttributes !== null && allowedHTMLAttributes !== void 0 && allowedHTMLAttributes.includes(attributeName)) {\n const newDocument = this.document.setHTMLAttributeAtPosition(position, attributeName, value);\n this.setDocument(newDocument);\n }\n }\n setTextAttribute(attributeName, value) {\n const selectedRange = this.getSelectedRange();\n if (!selectedRange) return;\n const [startPosition, endPosition] = Array.from(selectedRange);\n if (startPosition === endPosition) {\n if (attributeName === \"href\") {\n const text = Text.textForStringWithAttributes(value, {\n href: value\n });\n return this.insertText(text);\n }\n } else {\n return this.setDocument(this.document.addAttributeAtRange(attributeName, value, selectedRange));\n }\n }\n setBlockAttribute(attributeName, value) {\n const selectedRange = this.getSelectedRange();\n if (this.canSetCurrentAttribute(attributeName)) {\n this.setDocument(this.document.applyBlockAttributeAtRange(attributeName, value, selectedRange));\n return this.setSelection(selectedRange);\n }\n }\n removeCurrentAttribute(attributeName) {\n if (getBlockConfig(attributeName)) {\n this.removeBlockAttribute(attributeName);\n return this.updateCurrentAttributes();\n } else {\n this.removeTextAttribute(attributeName);\n delete this.currentAttributes[attributeName];\n return this.notifyDelegateOfCurrentAttributesChange();\n }\n }\n removeTextAttribute(attributeName) {\n const selectedRange = this.getSelectedRange();\n if (!selectedRange) return;\n return this.setDocument(this.document.removeAttributeAtRange(attributeName, selectedRange));\n }\n removeBlockAttribute(attributeName) {\n const selectedRange = this.getSelectedRange();\n if (!selectedRange) return;\n return this.setDocument(this.document.removeAttributeAtRange(attributeName, selectedRange));\n }\n canDecreaseNestingLevel() {\n var _this$getBlock;\n return ((_this$getBlock = this.getBlock()) === null || _this$getBlock === void 0 ? void 0 : _this$getBlock.getNestingLevel()) > 0;\n }\n canIncreaseNestingLevel() {\n var _getBlockConfig2;\n const block = this.getBlock();\n if (!block) return;\n if ((_getBlockConfig2 = getBlockConfig(block.getLastNestableAttribute())) !== null && _getBlockConfig2 !== void 0 && _getBlockConfig2.listAttribute) {\n const previousBlock = this.getPreviousBlock();\n if (previousBlock) {\n return arrayStartsWith(previousBlock.getListItemAttributes(), block.getListItemAttributes());\n }\n } else {\n return block.getNestingLevel() > 0;\n }\n }\n decreaseNestingLevel() {\n const block = this.getBlock();\n if (!block) return;\n return this.setDocument(this.document.replaceBlock(block, block.decreaseNestingLevel()));\n }\n increaseNestingLevel() {\n const block = this.getBlock();\n if (!block) return;\n return this.setDocument(this.document.replaceBlock(block, block.increaseNestingLevel()));\n }\n canDecreaseBlockAttributeLevel() {\n var _this$getBlock2;\n return ((_this$getBlock2 = this.getBlock()) === null || _this$getBlock2 === void 0 ? void 0 : _this$getBlock2.getAttributeLevel()) > 0;\n }\n decreaseBlockAttributeLevel() {\n var _this$getBlock3;\n const attribute = (_this$getBlock3 = this.getBlock()) === null || _this$getBlock3 === void 0 ? void 0 : _this$getBlock3.getLastAttribute();\n if (attribute) {\n return this.removeCurrentAttribute(attribute);\n }\n }\n decreaseListLevel() {\n let [startPosition] = Array.from(this.getSelectedRange());\n const {\n index\n } = this.document.locationFromPosition(startPosition);\n let endIndex = index;\n const attributeLevel = this.getBlock().getAttributeLevel();\n let block = this.document.getBlockAtIndex(endIndex + 1);\n while (block) {\n if (!block.isListItem() || block.getAttributeLevel() <= attributeLevel) {\n break;\n }\n endIndex++;\n block = this.document.getBlockAtIndex(endIndex + 1);\n }\n startPosition = this.document.positionFromLocation({\n index,\n offset: 0\n });\n const endPosition = this.document.positionFromLocation({\n index: endIndex,\n offset: 0\n });\n return this.setDocument(this.document.removeLastListAttributeAtRange([startPosition, endPosition]));\n }\n updateCurrentAttributes() {\n const selectedRange = this.getSelectedRange({\n ignoreLock: true\n });\n if (selectedRange) {\n const currentAttributes = this.document.getCommonAttributesAtRange(selectedRange);\n Array.from(getAllAttributeNames()).forEach(attributeName => {\n if (!currentAttributes[attributeName]) {\n if (!this.canSetCurrentAttribute(attributeName)) {\n currentAttributes[attributeName] = false;\n }\n }\n });\n if (!objectsAreEqual(currentAttributes, this.currentAttributes)) {\n this.currentAttributes = currentAttributes;\n return this.notifyDelegateOfCurrentAttributesChange();\n }\n }\n }\n getCurrentAttributes() {\n return extend.call({}, this.currentAttributes);\n }\n getCurrentTextAttributes() {\n const attributes = {};\n for (const key in this.currentAttributes) {\n const value = this.currentAttributes[key];\n if (value !== false) {\n if (getTextConfig(key)) {\n attributes[key] = value;\n }\n }\n }\n return attributes;\n }\n\n // Selection freezing\n\n freezeSelection() {\n return this.setCurrentAttribute(\"frozen\", true);\n }\n thawSelection() {\n return this.removeCurrentAttribute(\"frozen\");\n }\n hasFrozenSelection() {\n return this.hasCurrentAttribute(\"frozen\");\n }\n setSelection(selectedRange) {\n var _this$delegate5;\n const locationRange = this.document.locationRangeFromRange(selectedRange);\n return (_this$delegate5 = this.delegate) === null || _this$delegate5 === void 0 ? void 0 : _this$delegate5.compositionDidRequestChangingSelectionToLocationRange(locationRange);\n }\n getSelectedRange() {\n const locationRange = this.getLocationRange();\n if (locationRange) {\n return this.document.rangeFromLocationRange(locationRange);\n }\n }\n setSelectedRange(selectedRange) {\n const locationRange = this.document.locationRangeFromRange(selectedRange);\n return this.getSelectionManager().setLocationRange(locationRange);\n }\n getPosition() {\n const locationRange = this.getLocationRange();\n if (locationRange) {\n return this.document.positionFromLocation(locationRange[0]);\n }\n }\n getLocationRange(options) {\n if (this.targetLocationRange) {\n return this.targetLocationRange;\n } else {\n return this.getSelectionManager().getLocationRange(options) || normalizeRange({\n index: 0,\n offset: 0\n });\n }\n }\n withTargetLocationRange(locationRange, fn) {\n let result;\n this.targetLocationRange = locationRange;\n try {\n result = fn();\n } finally {\n this.targetLocationRange = null;\n }\n return result;\n }\n withTargetRange(range, fn) {\n const locationRange = this.document.locationRangeFromRange(range);\n return this.withTargetLocationRange(locationRange, fn);\n }\n withTargetDOMRange(domRange, fn) {\n const locationRange = this.createLocationRangeFromDOMRange(domRange, {\n strict: false\n });\n return this.withTargetLocationRange(locationRange, fn);\n }\n getExpandedRangeInDirection(direction) {\n let {\n length\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let [startPosition, endPosition] = Array.from(this.getSelectedRange());\n if (direction === \"backward\") {\n if (length) {\n startPosition -= length;\n } else {\n startPosition = this.translateUTF16PositionFromOffset(startPosition, -1);\n }\n } else {\n if (length) {\n endPosition += length;\n } else {\n endPosition = this.translateUTF16PositionFromOffset(endPosition, 1);\n }\n }\n return normalizeRange([startPosition, endPosition]);\n }\n shouldManageMovingCursorInDirection(direction) {\n if (this.editingAttachment) {\n return true;\n }\n const range = this.getExpandedRangeInDirection(direction);\n return this.getAttachmentAtRange(range) != null;\n }\n moveCursorInDirection(direction) {\n let canEditAttachment, range;\n if (this.editingAttachment) {\n range = this.document.getRangeOfAttachment(this.editingAttachment);\n } else {\n const selectedRange = this.getSelectedRange();\n range = this.getExpandedRangeInDirection(direction);\n canEditAttachment = !rangesAreEqual(selectedRange, range);\n }\n if (direction === \"backward\") {\n this.setSelectedRange(range[0]);\n } else {\n this.setSelectedRange(range[1]);\n }\n if (canEditAttachment) {\n const attachment = this.getAttachmentAtRange(range);\n if (attachment) {\n return this.editAttachment(attachment);\n }\n }\n }\n expandSelectionInDirection(direction) {\n let {\n length\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const range = this.getExpandedRangeInDirection(direction, {\n length\n });\n return this.setSelectedRange(range);\n }\n expandSelectionForEditing() {\n if (this.hasCurrentAttribute(\"href\")) {\n return this.expandSelectionAroundCommonAttribute(\"href\");\n }\n }\n expandSelectionAroundCommonAttribute(attributeName) {\n const position = this.getPosition();\n const range = this.document.getRangeOfCommonAttributeAtPosition(attributeName, position);\n return this.setSelectedRange(range);\n }\n selectionContainsAttachments() {\n var _this$getSelectedAtta;\n return ((_this$getSelectedAtta = this.getSelectedAttachments()) === null || _this$getSelectedAtta === void 0 ? void 0 : _this$getSelectedAtta.length) > 0;\n }\n selectionIsInCursorTarget() {\n return this.editingAttachment || this.positionIsCursorTarget(this.getPosition());\n }\n positionIsCursorTarget(position) {\n const location = this.document.locationFromPosition(position);\n if (location) {\n return this.locationIsCursorTarget(location);\n }\n }\n positionIsBlockBreak(position) {\n var _this$document$getPie;\n return (_this$document$getPie = this.document.getPieceAtPosition(position)) === null || _this$document$getPie === void 0 ? void 0 : _this$document$getPie.isBlockBreak();\n }\n getSelectedDocument() {\n const selectedRange = this.getSelectedRange();\n if (selectedRange) {\n return this.document.getDocumentAtRange(selectedRange);\n }\n }\n getSelectedAttachments() {\n var _this$getSelectedDocu;\n return (_this$getSelectedDocu = this.getSelectedDocument()) === null || _this$getSelectedDocu === void 0 ? void 0 : _this$getSelectedDocu.getAttachments();\n }\n\n // Attachments\n\n getAttachments() {\n return this.attachments.slice(0);\n }\n refreshAttachments() {\n const attachments = this.document.getAttachments();\n const {\n added,\n removed\n } = summarizeArrayChange(this.attachments, attachments);\n this.attachments = attachments;\n Array.from(removed).forEach(attachment => {\n var _this$delegate6, _this$delegate6$compo;\n attachment.delegate = null;\n (_this$delegate6 = this.delegate) === null || _this$delegate6 === void 0 || (_this$delegate6$compo = _this$delegate6.compositionDidRemoveAttachment) === null || _this$delegate6$compo === void 0 || _this$delegate6$compo.call(_this$delegate6, attachment);\n });\n return (() => {\n const result = [];\n Array.from(added).forEach(attachment => {\n var _this$delegate7, _this$delegate7$compo;\n attachment.delegate = this;\n result.push((_this$delegate7 = this.delegate) === null || _this$delegate7 === void 0 || (_this$delegate7$compo = _this$delegate7.compositionDidAddAttachment) === null || _this$delegate7$compo === void 0 ? void 0 : _this$delegate7$compo.call(_this$delegate7, attachment));\n });\n return result;\n })();\n }\n\n // Attachment delegate\n\n attachmentDidChangeAttributes(attachment) {\n var _this$delegate8, _this$delegate8$compo;\n this.revision++;\n return (_this$delegate8 = this.delegate) === null || _this$delegate8 === void 0 || (_this$delegate8$compo = _this$delegate8.compositionDidEditAttachment) === null || _this$delegate8$compo === void 0 ? void 0 : _this$delegate8$compo.call(_this$delegate8, attachment);\n }\n attachmentDidChangePreviewURL(attachment) {\n var _this$delegate9, _this$delegate9$compo;\n this.revision++;\n return (_this$delegate9 = this.delegate) === null || _this$delegate9 === void 0 || (_this$delegate9$compo = _this$delegate9.compositionDidChangeAttachmentPreviewURL) === null || _this$delegate9$compo === void 0 ? void 0 : _this$delegate9$compo.call(_this$delegate9, attachment);\n }\n\n // Attachment editing\n\n editAttachment(attachment, options) {\n var _this$delegate10, _this$delegate10$comp;\n if (attachment === this.editingAttachment) return;\n this.stopEditingAttachment();\n this.editingAttachment = attachment;\n return (_this$delegate10 = this.delegate) === null || _this$delegate10 === void 0 || (_this$delegate10$comp = _this$delegate10.compositionDidStartEditingAttachment) === null || _this$delegate10$comp === void 0 ? void 0 : _this$delegate10$comp.call(_this$delegate10, this.editingAttachment, options);\n }\n stopEditingAttachment() {\n var _this$delegate11, _this$delegate11$comp;\n if (!this.editingAttachment) return;\n (_this$delegate11 = this.delegate) === null || _this$delegate11 === void 0 || (_this$delegate11$comp = _this$delegate11.compositionDidStopEditingAttachment) === null || _this$delegate11$comp === void 0 || _this$delegate11$comp.call(_this$delegate11, this.editingAttachment);\n this.editingAttachment = null;\n }\n updateAttributesForAttachment(attributes, attachment) {\n return this.setDocument(this.document.updateAttributesForAttachment(attributes, attachment));\n }\n removeAttributeForAttachment(attribute, attachment) {\n return this.setDocument(this.document.removeAttributeForAttachment(attribute, attachment));\n }\n\n // Private\n\n breakFormattedBlock(insertion) {\n let {\n document\n } = insertion;\n const {\n block\n } = insertion;\n let position = insertion.startPosition;\n let range = [position - 1, position];\n if (block.getBlockBreakPosition() === insertion.startLocation.offset) {\n if (block.breaksOnReturn() && insertion.nextCharacter === \"\\n\") {\n position += 1;\n } else {\n document = document.removeTextAtRange(range);\n }\n range = [position, position];\n } else if (insertion.nextCharacter === \"\\n\") {\n if (insertion.previousCharacter === \"\\n\") {\n range = [position - 1, position + 1];\n } else {\n range = [position, position + 1];\n position += 1;\n }\n } else if (insertion.startLocation.offset - 1 !== 0) {\n position += 1;\n }\n const newDocument = new Document([block.removeLastAttribute().copyWithoutText()]);\n this.setDocument(document.insertDocumentAtRange(newDocument, range));\n return this.setSelection(position);\n }\n getPreviousBlock() {\n const locationRange = this.getLocationRange();\n if (locationRange) {\n const {\n index\n } = locationRange[0];\n if (index > 0) {\n return this.document.getBlockAtIndex(index - 1);\n }\n }\n }\n getBlock() {\n const locationRange = this.getLocationRange();\n if (locationRange) {\n return this.document.getBlockAtIndex(locationRange[0].index);\n }\n }\n getAttachmentAtRange(range) {\n const document = this.document.getDocumentAtRange(range);\n if (document.toString() === \"\".concat(OBJECT_REPLACEMENT_CHARACTER, \"\\n\")) {\n return document.getAttachments()[0];\n }\n }\n notifyDelegateOfCurrentAttributesChange() {\n var _this$delegate12, _this$delegate12$comp;\n return (_this$delegate12 = this.delegate) === null || _this$delegate12 === void 0 || (_this$delegate12$comp = _this$delegate12.compositionDidChangeCurrentAttributes) === null || _this$delegate12$comp === void 0 ? void 0 : _this$delegate12$comp.call(_this$delegate12, this.currentAttributes);\n }\n notifyDelegateOfInsertionAtRange(range) {\n var _this$delegate13, _this$delegate13$comp;\n return (_this$delegate13 = this.delegate) === null || _this$delegate13 === void 0 || (_this$delegate13$comp = _this$delegate13.compositionDidPerformInsertionAtRange) === null || _this$delegate13$comp === void 0 ? void 0 : _this$delegate13$comp.call(_this$delegate13, range);\n }\n translateUTF16PositionFromOffset(position, offset) {\n const utf16string = this.document.toUTF16String();\n const utf16position = utf16string.offsetFromUCS2Offset(position);\n return utf16string.offsetToUCS2Offset(utf16position + offset);\n }\n}\nComposition.proxyMethod(\"getSelectionManager().getPointRange\");\nComposition.proxyMethod(\"getSelectionManager().setLocationRangeFromPointRange\");\nComposition.proxyMethod(\"getSelectionManager().createLocationRangeFromDOMRange\");\nComposition.proxyMethod(\"getSelectionManager().locationIsCursorTarget\");\nComposition.proxyMethod(\"getSelectionManager().selectionIsExpanded\");\nComposition.proxyMethod(\"delegate?.getSelectionManager\");\n\nclass UndoManager extends BasicObject {\n constructor(composition) {\n super(...arguments);\n this.composition = composition;\n this.undoEntries = [];\n this.redoEntries = [];\n }\n recordUndoEntry(description) {\n let {\n context,\n consolidatable\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const previousEntry = this.undoEntries.slice(-1)[0];\n if (!consolidatable || !entryHasDescriptionAndContext(previousEntry, description, context)) {\n const undoEntry = this.createEntry({\n description,\n context\n });\n this.undoEntries.push(undoEntry);\n this.redoEntries = [];\n }\n }\n undo() {\n const undoEntry = this.undoEntries.pop();\n if (undoEntry) {\n const redoEntry = this.createEntry(undoEntry);\n this.redoEntries.push(redoEntry);\n return this.composition.loadSnapshot(undoEntry.snapshot);\n }\n }\n redo() {\n const redoEntry = this.redoEntries.pop();\n if (redoEntry) {\n const undoEntry = this.createEntry(redoEntry);\n this.undoEntries.push(undoEntry);\n return this.composition.loadSnapshot(redoEntry.snapshot);\n }\n }\n canUndo() {\n return this.undoEntries.length > 0;\n }\n canRedo() {\n return this.redoEntries.length > 0;\n }\n\n // Private\n\n createEntry() {\n let {\n description,\n context\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return {\n description: description === null || description === void 0 ? void 0 : description.toString(),\n context: JSON.stringify(context),\n snapshot: this.composition.getSnapshot()\n };\n }\n}\nconst entryHasDescriptionAndContext = (entry, description, context) => (entry === null || entry === void 0 ? void 0 : entry.description) === (description === null || description === void 0 ? void 0 : description.toString()) && (entry === null || entry === void 0 ? void 0 : entry.context) === JSON.stringify(context);\n\nconst BLOCK_ATTRIBUTE_NAME = \"attachmentGallery\";\nconst TEXT_ATTRIBUTE_NAME = \"presentation\";\nconst TEXT_ATTRIBUTE_VALUE = \"gallery\";\nclass Filter {\n constructor(snapshot) {\n this.document = snapshot.document;\n this.selectedRange = snapshot.selectedRange;\n }\n perform() {\n this.removeBlockAttribute();\n return this.applyBlockAttribute();\n }\n getSnapshot() {\n return {\n document: this.document,\n selectedRange: this.selectedRange\n };\n }\n\n // Private\n\n removeBlockAttribute() {\n return this.findRangesOfBlocks().map(range => this.document = this.document.removeAttributeAtRange(BLOCK_ATTRIBUTE_NAME, range));\n }\n applyBlockAttribute() {\n let offset = 0;\n this.findRangesOfPieces().forEach(range => {\n if (range[1] - range[0] > 1) {\n range[0] += offset;\n range[1] += offset;\n if (this.document.getCharacterAtPosition(range[1]) !== \"\\n\") {\n this.document = this.document.insertBlockBreakAtRange(range[1]);\n if (range[1] < this.selectedRange[1]) {\n this.moveSelectedRangeForward();\n }\n range[1]++;\n offset++;\n }\n if (range[0] !== 0) {\n if (this.document.getCharacterAtPosition(range[0] - 1) !== \"\\n\") {\n this.document = this.document.insertBlockBreakAtRange(range[0]);\n if (range[0] < this.selectedRange[0]) {\n this.moveSelectedRangeForward();\n }\n range[0]++;\n offset++;\n }\n }\n this.document = this.document.applyBlockAttributeAtRange(BLOCK_ATTRIBUTE_NAME, true, range);\n }\n });\n }\n findRangesOfBlocks() {\n return this.document.findRangesForBlockAttribute(BLOCK_ATTRIBUTE_NAME);\n }\n findRangesOfPieces() {\n return this.document.findRangesForTextAttribute(TEXT_ATTRIBUTE_NAME, {\n withValue: TEXT_ATTRIBUTE_VALUE\n });\n }\n moveSelectedRangeForward() {\n this.selectedRange[0] += 1;\n this.selectedRange[1] += 1;\n }\n}\n\nconst attachmentGalleryFilter = function (snapshot) {\n const filter = new Filter(snapshot);\n filter.perform();\n return filter.getSnapshot();\n};\n\nconst DEFAULT_FILTERS = [attachmentGalleryFilter];\nclass Editor {\n constructor(composition, selectionManager, element) {\n this.insertFiles = this.insertFiles.bind(this);\n this.composition = composition;\n this.selectionManager = selectionManager;\n this.element = element;\n this.undoManager = new UndoManager(this.composition);\n this.filters = DEFAULT_FILTERS.slice(0);\n }\n loadDocument(document) {\n return this.loadSnapshot({\n document,\n selectedRange: [0, 0]\n });\n }\n loadHTML() {\n let html = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n const document = HTMLParser.parse(html, {\n referenceElement: this.element\n }).getDocument();\n return this.loadDocument(document);\n }\n loadJSON(_ref) {\n let {\n document,\n selectedRange\n } = _ref;\n document = Document.fromJSON(document);\n return this.loadSnapshot({\n document,\n selectedRange\n });\n }\n loadSnapshot(snapshot) {\n this.undoManager = new UndoManager(this.composition);\n return this.composition.loadSnapshot(snapshot);\n }\n getDocument() {\n return this.composition.document;\n }\n getSelectedDocument() {\n return this.composition.getSelectedDocument();\n }\n getSnapshot() {\n return this.composition.getSnapshot();\n }\n toJSON() {\n return this.getSnapshot();\n }\n\n // Document manipulation\n\n deleteInDirection(direction) {\n return this.composition.deleteInDirection(direction);\n }\n insertAttachment(attachment) {\n return this.composition.insertAttachment(attachment);\n }\n insertAttachments(attachments) {\n return this.composition.insertAttachments(attachments);\n }\n insertDocument(document) {\n return this.composition.insertDocument(document);\n }\n insertFile(file) {\n return this.composition.insertFile(file);\n }\n insertFiles(files) {\n return this.composition.insertFiles(files);\n }\n insertHTML(html) {\n return this.composition.insertHTML(html);\n }\n insertString(string) {\n return this.composition.insertString(string);\n }\n insertText(text) {\n return this.composition.insertText(text);\n }\n insertLineBreak() {\n return this.composition.insertLineBreak();\n }\n\n // Selection\n\n getSelectedRange() {\n return this.composition.getSelectedRange();\n }\n getPosition() {\n return this.composition.getPosition();\n }\n getClientRectAtPosition(position) {\n const locationRange = this.getDocument().locationRangeFromRange([position, position + 1]);\n return this.selectionManager.getClientRectAtLocationRange(locationRange);\n }\n expandSelectionInDirection(direction) {\n return this.composition.expandSelectionInDirection(direction);\n }\n moveCursorInDirection(direction) {\n return this.composition.moveCursorInDirection(direction);\n }\n setSelectedRange(selectedRange) {\n return this.composition.setSelectedRange(selectedRange);\n }\n\n // Attributes\n\n activateAttribute(name) {\n let value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n return this.composition.setCurrentAttribute(name, value);\n }\n attributeIsActive(name) {\n return this.composition.hasCurrentAttribute(name);\n }\n canActivateAttribute(name) {\n return this.composition.canSetCurrentAttribute(name);\n }\n deactivateAttribute(name) {\n return this.composition.removeCurrentAttribute(name);\n }\n\n // HTML attributes\n setHTMLAtributeAtPosition(position, name, value) {\n this.composition.setHTMLAtributeAtPosition(position, name, value);\n }\n\n // Nesting level\n\n canDecreaseNestingLevel() {\n return this.composition.canDecreaseNestingLevel();\n }\n canIncreaseNestingLevel() {\n return this.composition.canIncreaseNestingLevel();\n }\n decreaseNestingLevel() {\n if (this.canDecreaseNestingLevel()) {\n return this.composition.decreaseNestingLevel();\n }\n }\n increaseNestingLevel() {\n if (this.canIncreaseNestingLevel()) {\n return this.composition.increaseNestingLevel();\n }\n }\n\n // Undo/redo\n\n canRedo() {\n return this.undoManager.canRedo();\n }\n canUndo() {\n return this.undoManager.canUndo();\n }\n recordUndoEntry(description) {\n let {\n context,\n consolidatable\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.undoManager.recordUndoEntry(description, {\n context,\n consolidatable\n });\n }\n redo() {\n if (this.canRedo()) {\n return this.undoManager.redo();\n }\n }\n undo() {\n if (this.canUndo()) {\n return this.undoManager.undo();\n }\n }\n}\n\n/* eslint-disable\n no-var,\n prefer-const,\n*/\nclass LocationMapper {\n constructor(element) {\n this.element = element;\n }\n findLocationFromContainerAndOffset(container, offset) {\n let {\n strict\n } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n strict: true\n };\n let childIndex = 0;\n let foundBlock = false;\n const location = {\n index: 0,\n offset: 0\n };\n const attachmentElement = this.findAttachmentElementParentForNode(container);\n if (attachmentElement) {\n container = attachmentElement.parentNode;\n offset = findChildIndexOfNode(attachmentElement);\n }\n const walker = walkTree(this.element, {\n usingFilter: rejectAttachmentContents\n });\n while (walker.nextNode()) {\n const node = walker.currentNode;\n if (node === container && nodeIsTextNode(container)) {\n if (!nodeIsCursorTarget(node)) {\n location.offset += offset;\n }\n break;\n } else {\n if (node.parentNode === container) {\n if (childIndex++ === offset) {\n break;\n }\n } else if (!elementContainsNode(container, node)) {\n if (childIndex > 0) {\n break;\n }\n }\n if (nodeIsBlockStart(node, {\n strict\n })) {\n if (foundBlock) {\n location.index++;\n }\n location.offset = 0;\n foundBlock = true;\n } else {\n location.offset += nodeLength(node);\n }\n }\n }\n return location;\n }\n findContainerAndOffsetFromLocation(location) {\n let container, offset;\n if (location.index === 0 && location.offset === 0) {\n container = this.element;\n offset = 0;\n while (container.firstChild) {\n container = container.firstChild;\n if (nodeIsBlockContainer(container)) {\n offset = 1;\n break;\n }\n }\n return [container, offset];\n }\n let [node, nodeOffset] = this.findNodeAndOffsetFromLocation(location);\n if (!node) return;\n if (nodeIsTextNode(node)) {\n if (nodeLength(node) === 0) {\n container = node.parentNode.parentNode;\n offset = findChildIndexOfNode(node.parentNode);\n if (nodeIsCursorTarget(node, {\n name: \"right\"\n })) {\n offset++;\n }\n } else {\n container = node;\n offset = location.offset - nodeOffset;\n }\n } else {\n container = node.parentNode;\n if (!nodeIsBlockStart(node.previousSibling)) {\n if (!nodeIsBlockContainer(container)) {\n while (node === container.lastChild) {\n node = container;\n container = container.parentNode;\n if (nodeIsBlockContainer(container)) {\n break;\n }\n }\n }\n }\n offset = findChildIndexOfNode(node);\n if (location.offset !== 0) {\n offset++;\n }\n }\n return [container, offset];\n }\n findNodeAndOffsetFromLocation(location) {\n let node, nodeOffset;\n let offset = 0;\n for (const currentNode of this.getSignificantNodesForIndex(location.index)) {\n const length = nodeLength(currentNode);\n if (location.offset <= offset + length) {\n if (nodeIsTextNode(currentNode)) {\n node = currentNode;\n nodeOffset = offset;\n if (location.offset === nodeOffset && nodeIsCursorTarget(node)) {\n break;\n }\n } else if (!node) {\n node = currentNode;\n nodeOffset = offset;\n }\n }\n offset += length;\n if (offset > location.offset) {\n break;\n }\n }\n return [node, nodeOffset];\n }\n\n // Private\n\n findAttachmentElementParentForNode(node) {\n while (node && node !== this.element) {\n if (nodeIsAttachmentElement(node)) {\n return node;\n }\n node = node.parentNode;\n }\n }\n getSignificantNodesForIndex(index) {\n const nodes = [];\n const walker = walkTree(this.element, {\n usingFilter: acceptSignificantNodes\n });\n let recordingNodes = false;\n while (walker.nextNode()) {\n const node = walker.currentNode;\n if (nodeIsBlockStartComment(node)) {\n var blockIndex;\n if (blockIndex != null) {\n blockIndex++;\n } else {\n blockIndex = 0;\n }\n if (blockIndex === index) {\n recordingNodes = true;\n } else if (recordingNodes) {\n break;\n }\n } else if (recordingNodes) {\n nodes.push(node);\n }\n }\n return nodes;\n }\n}\nconst nodeLength = function (node) {\n if (node.nodeType === Node.TEXT_NODE) {\n if (nodeIsCursorTarget(node)) {\n return 0;\n } else {\n const string = node.textContent;\n return string.length;\n }\n } else if (tagName(node) === \"br\" || nodeIsAttachmentElement(node)) {\n return 1;\n } else {\n return 0;\n }\n};\nconst acceptSignificantNodes = function (node) {\n if (rejectEmptyTextNodes(node) === NodeFilter.FILTER_ACCEPT) {\n return rejectAttachmentContents(node);\n } else {\n return NodeFilter.FILTER_REJECT;\n }\n};\nconst rejectEmptyTextNodes = function (node) {\n if (nodeIsEmptyTextNode(node)) {\n return NodeFilter.FILTER_REJECT;\n } else {\n return NodeFilter.FILTER_ACCEPT;\n }\n};\nconst rejectAttachmentContents = function (node) {\n if (nodeIsAttachmentElement(node.parentNode)) {\n return NodeFilter.FILTER_REJECT;\n } else {\n return NodeFilter.FILTER_ACCEPT;\n }\n};\n\n/* eslint-disable\n id-length,\n no-empty,\n*/\nclass PointMapper {\n createDOMRangeFromPoint(_ref) {\n let {\n x,\n y\n } = _ref;\n let domRange;\n if (document.caretPositionFromPoint) {\n const {\n offsetNode,\n offset\n } = document.caretPositionFromPoint(x, y);\n domRange = document.createRange();\n domRange.setStart(offsetNode, offset);\n return domRange;\n } else if (document.caretRangeFromPoint) {\n return document.caretRangeFromPoint(x, y);\n } else if (document.body.createTextRange) {\n const originalDOMRange = getDOMRange();\n try {\n // IE 11 throws \"Unspecified error\" when using moveToPoint\n // during a drag-and-drop operation.\n const textRange = document.body.createTextRange();\n textRange.moveToPoint(x, y);\n textRange.select();\n } catch (error) {}\n domRange = getDOMRange();\n setDOMRange(originalDOMRange);\n return domRange;\n }\n }\n getClientRectsForDOMRange(domRange) {\n const array = Array.from(domRange.getClientRects());\n const start = array[0];\n const end = array[array.length - 1];\n return [start, end];\n }\n}\n\n/* eslint-disable\n*/\nclass SelectionManager extends BasicObject {\n constructor(element) {\n super(...arguments);\n this.didMouseDown = this.didMouseDown.bind(this);\n this.selectionDidChange = this.selectionDidChange.bind(this);\n this.element = element;\n this.locationMapper = new LocationMapper(this.element);\n this.pointMapper = new PointMapper();\n this.lockCount = 0;\n handleEvent(\"mousedown\", {\n onElement: this.element,\n withCallback: this.didMouseDown\n });\n }\n getLocationRange() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (options.strict === false) {\n return this.createLocationRangeFromDOMRange(getDOMRange());\n } else if (options.ignoreLock) {\n return this.currentLocationRange;\n } else if (this.lockedLocationRange) {\n return this.lockedLocationRange;\n } else {\n return this.currentLocationRange;\n }\n }\n setLocationRange(locationRange) {\n if (this.lockedLocationRange) return;\n locationRange = normalizeRange(locationRange);\n const domRange = this.createDOMRangeFromLocationRange(locationRange);\n if (domRange) {\n setDOMRange(domRange);\n this.updateCurrentLocationRange(locationRange);\n }\n }\n setLocationRangeFromPointRange(pointRange) {\n pointRange = normalizeRange(pointRange);\n const startLocation = this.getLocationAtPoint(pointRange[0]);\n const endLocation = this.getLocationAtPoint(pointRange[1]);\n this.setLocationRange([startLocation, endLocation]);\n }\n getClientRectAtLocationRange(locationRange) {\n const domRange = this.createDOMRangeFromLocationRange(locationRange);\n if (domRange) {\n return this.getClientRectsForDOMRange(domRange)[1];\n }\n }\n locationIsCursorTarget(location) {\n const node = Array.from(this.findNodeAndOffsetFromLocation(location))[0];\n return nodeIsCursorTarget(node);\n }\n lock() {\n if (this.lockCount++ === 0) {\n this.updateCurrentLocationRange();\n this.lockedLocationRange = this.getLocationRange();\n }\n }\n unlock() {\n if (--this.lockCount === 0) {\n const {\n lockedLocationRange\n } = this;\n this.lockedLocationRange = null;\n if (lockedLocationRange != null) {\n return this.setLocationRange(lockedLocationRange);\n }\n }\n }\n clearSelection() {\n var _getDOMSelection;\n return (_getDOMSelection = getDOMSelection()) === null || _getDOMSelection === void 0 ? void 0 : _getDOMSelection.removeAllRanges();\n }\n selectionIsCollapsed() {\n var _getDOMRange;\n return ((_getDOMRange = getDOMRange()) === null || _getDOMRange === void 0 ? void 0 : _getDOMRange.collapsed) === true;\n }\n selectionIsExpanded() {\n return !this.selectionIsCollapsed();\n }\n createLocationRangeFromDOMRange(domRange, options) {\n if (domRange == null || !this.domRangeWithinElement(domRange)) return;\n const start = this.findLocationFromContainerAndOffset(domRange.startContainer, domRange.startOffset, options);\n if (!start) return;\n const end = domRange.collapsed ? undefined : this.findLocationFromContainerAndOffset(domRange.endContainer, domRange.endOffset, options);\n return normalizeRange([start, end]);\n }\n didMouseDown() {\n return this.pauseTemporarily();\n }\n pauseTemporarily() {\n let resumeHandlers;\n this.paused = true;\n const resume = () => {\n this.paused = false;\n clearTimeout(resumeTimeout);\n Array.from(resumeHandlers).forEach(handler => {\n handler.destroy();\n });\n if (elementContainsNode(document, this.element)) {\n return this.selectionDidChange();\n }\n };\n const resumeTimeout = setTimeout(resume, 200);\n resumeHandlers = [\"mousemove\", \"keydown\"].map(eventName => handleEvent(eventName, {\n onElement: document,\n withCallback: resume\n }));\n }\n selectionDidChange() {\n if (!this.paused && !innerElementIsActive(this.element)) {\n return this.updateCurrentLocationRange();\n }\n }\n updateCurrentLocationRange(locationRange) {\n if (locationRange != null ? locationRange : locationRange = this.createLocationRangeFromDOMRange(getDOMRange())) {\n if (!rangesAreEqual(locationRange, this.currentLocationRange)) {\n var _this$delegate, _this$delegate$locati;\n this.currentLocationRange = locationRange;\n return (_this$delegate = this.delegate) === null || _this$delegate === void 0 || (_this$delegate$locati = _this$delegate.locationRangeDidChange) === null || _this$delegate$locati === void 0 ? void 0 : _this$delegate$locati.call(_this$delegate, this.currentLocationRange.slice(0));\n }\n }\n }\n createDOMRangeFromLocationRange(locationRange) {\n const rangeStart = this.findContainerAndOffsetFromLocation(locationRange[0]);\n const rangeEnd = rangeIsCollapsed(locationRange) ? rangeStart : this.findContainerAndOffsetFromLocation(locationRange[1]) || rangeStart;\n if (rangeStart != null && rangeEnd != null) {\n const domRange = document.createRange();\n domRange.setStart(...Array.from(rangeStart || []));\n domRange.setEnd(...Array.from(rangeEnd || []));\n return domRange;\n }\n }\n getLocationAtPoint(point) {\n const domRange = this.createDOMRangeFromPoint(point);\n if (domRange) {\n var _this$createLocationR;\n return (_this$createLocationR = this.createLocationRangeFromDOMRange(domRange)) === null || _this$createLocationR === void 0 ? void 0 : _this$createLocationR[0];\n }\n }\n domRangeWithinElement(domRange) {\n if (domRange.collapsed) {\n return elementContainsNode(this.element, domRange.startContainer);\n } else {\n return elementContainsNode(this.element, domRange.startContainer) && elementContainsNode(this.element, domRange.endContainer);\n }\n }\n}\nSelectionManager.proxyMethod(\"locationMapper.findLocationFromContainerAndOffset\");\nSelectionManager.proxyMethod(\"locationMapper.findContainerAndOffsetFromLocation\");\nSelectionManager.proxyMethod(\"locationMapper.findNodeAndOffsetFromLocation\");\nSelectionManager.proxyMethod(\"pointMapper.createDOMRangeFromPoint\");\nSelectionManager.proxyMethod(\"pointMapper.getClientRectsForDOMRange\");\n\nvar models = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Attachment: Attachment,\n AttachmentManager: AttachmentManager,\n AttachmentPiece: AttachmentPiece,\n Block: Block,\n Composition: Composition,\n Document: Document,\n Editor: Editor,\n HTMLParser: HTMLParser,\n HTMLSanitizer: HTMLSanitizer,\n LineBreakInsertion: LineBreakInsertion,\n LocationMapper: LocationMapper,\n ManagedAttachment: ManagedAttachment,\n Piece: Piece,\n PointMapper: PointMapper,\n SelectionManager: SelectionManager,\n SplittableList: SplittableList,\n StringPiece: StringPiece,\n Text: Text,\n UndoManager: UndoManager\n});\n\nvar views = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ObjectView: ObjectView,\n AttachmentView: AttachmentView,\n BlockView: BlockView,\n DocumentView: DocumentView,\n PieceView: PieceView,\n PreviewableAttachmentView: PreviewableAttachmentView,\n TextView: TextView\n});\n\nconst {\n lang,\n css,\n keyNames: keyNames$1\n} = config;\nconst undoable = function (fn) {\n return function () {\n const commands = fn.apply(this, arguments);\n commands.do();\n if (!this.undos) {\n this.undos = [];\n }\n this.undos.push(commands.undo);\n };\n};\nclass AttachmentEditorController extends BasicObject {\n constructor(attachmentPiece, _element, container) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n super(...arguments);\n // Installing and uninstalling\n _defineProperty(this, \"makeElementMutable\", undoable(() => {\n return {\n do: () => {\n this.element.dataset.trixMutable = true;\n },\n undo: () => delete this.element.dataset.trixMutable\n };\n }));\n _defineProperty(this, \"addToolbar\", undoable(() => {\n //
\n //
\n // \n // \n // \n //
\n //
\n const element = makeElement({\n tagName: \"div\",\n className: css.attachmentToolbar,\n data: {\n trixMutable: true\n },\n childNodes: makeElement({\n tagName: \"div\",\n className: \"trix-button-row\",\n childNodes: makeElement({\n tagName: \"span\",\n className: \"trix-button-group trix-button-group--actions\",\n childNodes: makeElement({\n tagName: \"button\",\n className: \"trix-button trix-button--remove\",\n textContent: lang.remove,\n attributes: {\n title: lang.remove\n },\n data: {\n trixAction: \"remove\"\n }\n })\n })\n })\n });\n if (this.attachment.isPreviewable()) {\n //
\n // \n // #{name}\n // #{size}\n // \n //
\n element.appendChild(makeElement({\n tagName: \"div\",\n className: css.attachmentMetadataContainer,\n childNodes: makeElement({\n tagName: \"span\",\n className: css.attachmentMetadata,\n childNodes: [makeElement({\n tagName: \"span\",\n className: css.attachmentName,\n textContent: this.attachment.getFilename(),\n attributes: {\n title: this.attachment.getFilename()\n }\n }), makeElement({\n tagName: \"span\",\n className: css.attachmentSize,\n textContent: this.attachment.getFormattedFilesize()\n })]\n })\n }));\n }\n handleEvent(\"click\", {\n onElement: element,\n withCallback: this.didClickToolbar\n });\n handleEvent(\"click\", {\n onElement: element,\n matchingSelector: \"[data-trix-action]\",\n withCallback: this.didClickActionButton\n });\n triggerEvent(\"trix-attachment-before-toolbar\", {\n onElement: this.element,\n attributes: {\n toolbar: element,\n attachment: this.attachment\n }\n });\n return {\n do: () => this.element.appendChild(element),\n undo: () => removeNode(element)\n };\n }));\n _defineProperty(this, \"installCaptionEditor\", undoable(() => {\n const textarea = makeElement({\n tagName: \"textarea\",\n className: css.attachmentCaptionEditor,\n attributes: {\n placeholder: lang.captionPlaceholder\n },\n data: {\n trixMutable: true\n }\n });\n textarea.value = this.attachmentPiece.getCaption();\n const textareaClone = textarea.cloneNode();\n textareaClone.classList.add(\"trix-autoresize-clone\");\n textareaClone.tabIndex = -1;\n const autoresize = function () {\n textareaClone.value = textarea.value;\n textarea.style.height = textareaClone.scrollHeight + \"px\";\n };\n handleEvent(\"input\", {\n onElement: textarea,\n withCallback: autoresize\n });\n handleEvent(\"input\", {\n onElement: textarea,\n withCallback: this.didInputCaption\n });\n handleEvent(\"keydown\", {\n onElement: textarea,\n withCallback: this.didKeyDownCaption\n });\n handleEvent(\"change\", {\n onElement: textarea,\n withCallback: this.didChangeCaption\n });\n handleEvent(\"blur\", {\n onElement: textarea,\n withCallback: this.didBlurCaption\n });\n const figcaption = this.element.querySelector(\"figcaption\");\n const editingFigcaption = figcaption.cloneNode();\n return {\n do: () => {\n figcaption.style.display = \"none\";\n editingFigcaption.appendChild(textarea);\n editingFigcaption.appendChild(textareaClone);\n editingFigcaption.classList.add(\"\".concat(css.attachmentCaption, \"--editing\"));\n figcaption.parentElement.insertBefore(editingFigcaption, figcaption);\n autoresize();\n if (this.options.editCaption) {\n return defer(() => textarea.focus());\n }\n },\n undo() {\n removeNode(editingFigcaption);\n figcaption.style.display = null;\n }\n };\n }));\n this.didClickToolbar = this.didClickToolbar.bind(this);\n this.didClickActionButton = this.didClickActionButton.bind(this);\n this.didKeyDownCaption = this.didKeyDownCaption.bind(this);\n this.didInputCaption = this.didInputCaption.bind(this);\n this.didChangeCaption = this.didChangeCaption.bind(this);\n this.didBlurCaption = this.didBlurCaption.bind(this);\n this.attachmentPiece = attachmentPiece;\n this.element = _element;\n this.container = container;\n this.options = options;\n this.attachment = this.attachmentPiece.attachment;\n if (tagName(this.element) === \"a\") {\n this.element = this.element.firstChild;\n }\n this.install();\n }\n install() {\n this.makeElementMutable();\n this.addToolbar();\n if (this.attachment.isPreviewable()) {\n this.installCaptionEditor();\n }\n }\n uninstall() {\n var _this$delegate;\n let undo = this.undos.pop();\n this.savePendingCaption();\n while (undo) {\n undo();\n undo = this.undos.pop();\n }\n (_this$delegate = this.delegate) === null || _this$delegate === void 0 || _this$delegate.didUninstallAttachmentEditor(this);\n }\n\n // Private\n\n savePendingCaption() {\n if (this.pendingCaption != null) {\n const caption = this.pendingCaption;\n this.pendingCaption = null;\n if (caption) {\n var _this$delegate2, _this$delegate2$attac;\n (_this$delegate2 = this.delegate) === null || _this$delegate2 === void 0 || (_this$delegate2$attac = _this$delegate2.attachmentEditorDidRequestUpdatingAttributesForAttachment) === null || _this$delegate2$attac === void 0 || _this$delegate2$attac.call(_this$delegate2, {\n caption\n }, this.attachment);\n } else {\n var _this$delegate3, _this$delegate3$attac;\n (_this$delegate3 = this.delegate) === null || _this$delegate3 === void 0 || (_this$delegate3$attac = _this$delegate3.attachmentEditorDidRequestRemovingAttributeForAttachment) === null || _this$delegate3$attac === void 0 || _this$delegate3$attac.call(_this$delegate3, \"caption\", this.attachment);\n }\n }\n }\n // Event handlers\n\n didClickToolbar(event) {\n event.preventDefault();\n return event.stopPropagation();\n }\n didClickActionButton(event) {\n var _this$delegate4;\n const action = event.target.getAttribute(\"data-trix-action\");\n switch (action) {\n case \"remove\":\n return (_this$delegate4 = this.delegate) === null || _this$delegate4 === void 0 ? void 0 : _this$delegate4.attachmentEditorDidRequestRemovalOfAttachment(this.attachment);\n }\n }\n didKeyDownCaption(event) {\n if (keyNames$1[event.keyCode] === \"return\") {\n var _this$delegate5, _this$delegate5$attac;\n event.preventDefault();\n this.savePendingCaption();\n return (_this$delegate5 = this.delegate) === null || _this$delegate5 === void 0 || (_this$delegate5$attac = _this$delegate5.attachmentEditorDidRequestDeselectingAttachment) === null || _this$delegate5$attac === void 0 ? void 0 : _this$delegate5$attac.call(_this$delegate5, this.attachment);\n }\n }\n didInputCaption(event) {\n this.pendingCaption = event.target.value.replace(/\\s/g, \" \").trim();\n }\n didChangeCaption(event) {\n return this.savePendingCaption();\n }\n didBlurCaption(event) {\n return this.savePendingCaption();\n }\n}\n\nclass CompositionController extends BasicObject {\n constructor(element, composition) {\n super(...arguments);\n this.didFocus = this.didFocus.bind(this);\n this.didBlur = this.didBlur.bind(this);\n this.didClickAttachment = this.didClickAttachment.bind(this);\n this.element = element;\n this.composition = composition;\n this.documentView = new DocumentView(this.composition.document, {\n element: this.element\n });\n handleEvent(\"focus\", {\n onElement: this.element,\n withCallback: this.didFocus\n });\n handleEvent(\"blur\", {\n onElement: this.element,\n withCallback: this.didBlur\n });\n handleEvent(\"click\", {\n onElement: this.element,\n matchingSelector: \"a[contenteditable=false]\",\n preventDefault: true\n });\n handleEvent(\"mousedown\", {\n onElement: this.element,\n matchingSelector: attachmentSelector,\n withCallback: this.didClickAttachment\n });\n handleEvent(\"click\", {\n onElement: this.element,\n matchingSelector: \"a\".concat(attachmentSelector),\n preventDefault: true\n });\n }\n didFocus(event) {\n var _this$blurPromise;\n const perform = () => {\n if (!this.focused) {\n var _this$delegate, _this$delegate$compos;\n this.focused = true;\n return (_this$delegate = this.delegate) === null || _this$delegate === void 0 || (_this$delegate$compos = _this$delegate.compositionControllerDidFocus) === null || _this$delegate$compos === void 0 ? void 0 : _this$delegate$compos.call(_this$delegate);\n }\n };\n return ((_this$blurPromise = this.blurPromise) === null || _this$blurPromise === void 0 ? void 0 : _this$blurPromise.then(perform)) || perform();\n }\n didBlur(event) {\n this.blurPromise = new Promise(resolve => {\n return defer(() => {\n if (!innerElementIsActive(this.element)) {\n var _this$delegate2, _this$delegate2$compo;\n this.focused = null;\n (_this$delegate2 = this.delegate) === null || _this$delegate2 === void 0 || (_this$delegate2$compo = _this$delegate2.compositionControllerDidBlur) === null || _this$delegate2$compo === void 0 || _this$delegate2$compo.call(_this$delegate2);\n }\n this.blurPromise = null;\n return resolve();\n });\n });\n }\n didClickAttachment(event, target) {\n var _this$delegate3, _this$delegate3$compo;\n const attachment = this.findAttachmentForElement(target);\n const editCaption = !!findClosestElementFromNode(event.target, {\n matchingSelector: \"figcaption\"\n });\n return (_this$delegate3 = this.delegate) === null || _this$delegate3 === void 0 || (_this$delegate3$compo = _this$delegate3.compositionControllerDidSelectAttachment) === null || _this$delegate3$compo === void 0 ? void 0 : _this$delegate3$compo.call(_this$delegate3, attachment, {\n editCaption\n });\n }\n getSerializableElement() {\n if (this.isEditingAttachment()) {\n return this.documentView.shadowElement;\n } else {\n return this.element;\n }\n }\n render() {\n var _this$delegate6, _this$delegate6$compo;\n if (this.revision !== this.composition.revision) {\n this.documentView.setDocument(this.composition.document);\n this.documentView.render();\n this.revision = this.composition.revision;\n }\n if (this.canSyncDocumentView() && !this.documentView.isSynced()) {\n var _this$delegate4, _this$delegate4$compo, _this$delegate5, _this$delegate5$compo;\n (_this$delegate4 = this.delegate) === null || _this$delegate4 === void 0 || (_this$delegate4$compo = _this$delegate4.compositionControllerWillSyncDocumentView) === null || _this$delegate4$compo === void 0 || _this$delegate4$compo.call(_this$delegate4);\n this.documentView.sync();\n (_this$delegate5 = this.delegate) === null || _this$delegate5 === void 0 || (_this$delegate5$compo = _this$delegate5.compositionControllerDidSyncDocumentView) === null || _this$delegate5$compo === void 0 || _this$delegate5$compo.call(_this$delegate5);\n }\n return (_this$delegate6 = this.delegate) === null || _this$delegate6 === void 0 || (_this$delegate6$compo = _this$delegate6.compositionControllerDidRender) === null || _this$delegate6$compo === void 0 ? void 0 : _this$delegate6$compo.call(_this$delegate6);\n }\n rerenderViewForObject(object) {\n this.invalidateViewForObject(object);\n return this.render();\n }\n invalidateViewForObject(object) {\n return this.documentView.invalidateViewForObject(object);\n }\n isViewCachingEnabled() {\n return this.documentView.isViewCachingEnabled();\n }\n enableViewCaching() {\n return this.documentView.enableViewCaching();\n }\n disableViewCaching() {\n return this.documentView.disableViewCaching();\n }\n refreshViewCache() {\n return this.documentView.garbageCollectCachedViews();\n }\n\n // Attachment editor management\n\n isEditingAttachment() {\n return !!this.attachmentEditor;\n }\n installAttachmentEditorForAttachment(attachment, options) {\n var _this$attachmentEdito;\n if (((_this$attachmentEdito = this.attachmentEditor) === null || _this$attachmentEdito === void 0 ? void 0 : _this$attachmentEdito.attachment) === attachment) return;\n const element = this.documentView.findElementForObject(attachment);\n if (!element) return;\n this.uninstallAttachmentEditor();\n const attachmentPiece = this.composition.document.getAttachmentPieceForAttachment(attachment);\n this.attachmentEditor = new AttachmentEditorController(attachmentPiece, element, this.element, options);\n this.attachmentEditor.delegate = this;\n }\n uninstallAttachmentEditor() {\n var _this$attachmentEdito2;\n return (_this$attachmentEdito2 = this.attachmentEditor) === null || _this$attachmentEdito2 === void 0 ? void 0 : _this$attachmentEdito2.uninstall();\n }\n\n // Attachment controller delegate\n\n didUninstallAttachmentEditor() {\n this.attachmentEditor = null;\n return this.render();\n }\n attachmentEditorDidRequestUpdatingAttributesForAttachment(attributes, attachment) {\n var _this$delegate7, _this$delegate7$compo;\n (_this$delegate7 = this.delegate) === null || _this$delegate7 === void 0 || (_this$delegate7$compo = _this$delegate7.compositionControllerWillUpdateAttachment) === null || _this$delegate7$compo === void 0 || _this$delegate7$compo.call(_this$delegate7, attachment);\n return this.composition.updateAttributesForAttachment(attributes, attachment);\n }\n attachmentEditorDidRequestRemovingAttributeForAttachment(attribute, attachment) {\n var _this$delegate8, _this$delegate8$compo;\n (_this$delegate8 = this.delegate) === null || _this$delegate8 === void 0 || (_this$delegate8$compo = _this$delegate8.compositionControllerWillUpdateAttachment) === null || _this$delegate8$compo === void 0 || _this$delegate8$compo.call(_this$delegate8, attachment);\n return this.composition.removeAttributeForAttachment(attribute, attachment);\n }\n attachmentEditorDidRequestRemovalOfAttachment(attachment) {\n var _this$delegate9, _this$delegate9$compo;\n return (_this$delegate9 = this.delegate) === null || _this$delegate9 === void 0 || (_this$delegate9$compo = _this$delegate9.compositionControllerDidRequestRemovalOfAttachment) === null || _this$delegate9$compo === void 0 ? void 0 : _this$delegate9$compo.call(_this$delegate9, attachment);\n }\n attachmentEditorDidRequestDeselectingAttachment(attachment) {\n var _this$delegate10, _this$delegate10$comp;\n return (_this$delegate10 = this.delegate) === null || _this$delegate10 === void 0 || (_this$delegate10$comp = _this$delegate10.compositionControllerDidRequestDeselectingAttachment) === null || _this$delegate10$comp === void 0 ? void 0 : _this$delegate10$comp.call(_this$delegate10, attachment);\n }\n\n // Private\n\n canSyncDocumentView() {\n return !this.isEditingAttachment();\n }\n findAttachmentForElement(element) {\n return this.composition.document.getAttachmentById(parseInt(element.dataset.trixId, 10));\n }\n}\n\nclass Controller extends BasicObject {}\n\nconst mutableAttributeName = \"data-trix-mutable\";\nconst mutableSelector = \"[\".concat(mutableAttributeName, \"]\");\nconst options = {\n attributes: true,\n childList: true,\n characterData: true,\n characterDataOldValue: true,\n subtree: true\n};\nclass MutationObserver extends BasicObject {\n constructor(element) {\n super(element);\n this.didMutate = this.didMutate.bind(this);\n this.element = element;\n this.observer = new window.MutationObserver(this.didMutate);\n this.start();\n }\n start() {\n this.reset();\n return this.observer.observe(this.element, options);\n }\n stop() {\n return this.observer.disconnect();\n }\n didMutate(mutations) {\n this.mutations.push(...Array.from(this.findSignificantMutations(mutations) || []));\n if (this.mutations.length) {\n var _this$delegate, _this$delegate$elemen;\n (_this$delegate = this.delegate) === null || _this$delegate === void 0 || (_this$delegate$elemen = _this$delegate.elementDidMutate) === null || _this$delegate$elemen === void 0 || _this$delegate$elemen.call(_this$delegate, this.getMutationSummary());\n return this.reset();\n }\n }\n\n // Private\n\n reset() {\n this.mutations = [];\n }\n findSignificantMutations(mutations) {\n return mutations.filter(mutation => {\n return this.mutationIsSignificant(mutation);\n });\n }\n mutationIsSignificant(mutation) {\n if (this.nodeIsMutable(mutation.target)) {\n return false;\n }\n for (const node of Array.from(this.nodesModifiedByMutation(mutation))) {\n if (this.nodeIsSignificant(node)) return true;\n }\n return false;\n }\n nodeIsSignificant(node) {\n return node !== this.element && !this.nodeIsMutable(node) && !nodeIsEmptyTextNode(node);\n }\n nodeIsMutable(node) {\n return findClosestElementFromNode(node, {\n matchingSelector: mutableSelector\n });\n }\n nodesModifiedByMutation(mutation) {\n const nodes = [];\n switch (mutation.type) {\n case \"attributes\":\n if (mutation.attributeName !== mutableAttributeName) {\n nodes.push(mutation.target);\n }\n break;\n case \"characterData\":\n // Changes to text nodes should consider the parent element\n nodes.push(mutation.target.parentNode);\n nodes.push(mutation.target);\n break;\n case \"childList\":\n // Consider each added or removed node\n nodes.push(...Array.from(mutation.addedNodes || []));\n nodes.push(...Array.from(mutation.removedNodes || []));\n break;\n }\n return nodes;\n }\n getMutationSummary() {\n return this.getTextMutationSummary();\n }\n getTextMutationSummary() {\n const {\n additions,\n deletions\n } = this.getTextChangesFromCharacterData();\n const textChanges = this.getTextChangesFromChildList();\n Array.from(textChanges.additions).forEach(addition => {\n if (!Array.from(additions).includes(addition)) {\n additions.push(addition);\n }\n });\n deletions.push(...Array.from(textChanges.deletions || []));\n const summary = {};\n const added = additions.join(\"\");\n if (added) {\n summary.textAdded = added;\n }\n const deleted = deletions.join(\"\");\n if (deleted) {\n summary.textDeleted = deleted;\n }\n return summary;\n }\n getMutationsByType(type) {\n return Array.from(this.mutations).filter(mutation => mutation.type === type);\n }\n getTextChangesFromChildList() {\n let textAdded, textRemoved;\n const addedNodes = [];\n const removedNodes = [];\n Array.from(this.getMutationsByType(\"childList\")).forEach(mutation => {\n addedNodes.push(...Array.from(mutation.addedNodes || []));\n removedNodes.push(...Array.from(mutation.removedNodes || []));\n });\n const singleBlockCommentRemoved = addedNodes.length === 0 && removedNodes.length === 1 && nodeIsBlockStartComment(removedNodes[0]);\n if (singleBlockCommentRemoved) {\n textAdded = [];\n textRemoved = [\"\\n\"];\n } else {\n textAdded = getTextForNodes(addedNodes);\n textRemoved = getTextForNodes(removedNodes);\n }\n const additions = textAdded.filter((text, index) => text !== textRemoved[index]).map(normalizeSpaces);\n const deletions = textRemoved.filter((text, index) => text !== textAdded[index]).map(normalizeSpaces);\n return {\n additions,\n deletions\n };\n }\n getTextChangesFromCharacterData() {\n let added, removed;\n const characterMutations = this.getMutationsByType(\"characterData\");\n if (characterMutations.length) {\n const startMutation = characterMutations[0],\n endMutation = characterMutations[characterMutations.length - 1];\n const oldString = normalizeSpaces(startMutation.oldValue);\n const newString = normalizeSpaces(endMutation.target.data);\n const summarized = summarizeStringChange(oldString, newString);\n added = summarized.added;\n removed = summarized.removed;\n }\n return {\n additions: added ? [added] : [],\n deletions: removed ? [removed] : []\n };\n }\n}\nconst getTextForNodes = function () {\n let nodes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n const text = [];\n for (const node of Array.from(nodes)) {\n switch (node.nodeType) {\n case Node.TEXT_NODE:\n text.push(node.data);\n break;\n case Node.ELEMENT_NODE:\n if (tagName(node) === \"br\") {\n text.push(\"\\n\");\n } else {\n text.push(...Array.from(getTextForNodes(node.childNodes) || []));\n }\n break;\n }\n }\n return text;\n};\n\n/* eslint-disable\n no-empty,\n*/\nclass FileVerificationOperation extends Operation {\n constructor(file) {\n super(...arguments);\n this.file = file;\n }\n perform(callback) {\n const reader = new FileReader();\n reader.onerror = () => callback(false);\n reader.onload = () => {\n reader.onerror = null;\n try {\n reader.abort();\n } catch (error) {}\n return callback(true, this.file);\n };\n return reader.readAsArrayBuffer(this.file);\n }\n}\n\n// Each software keyboard on Android emits its own set of events and some of them can be buggy.\n// This class detects when some buggy events are being emitted and lets know the input controller\n// that they should be ignored.\nclass FlakyAndroidKeyboardDetector {\n constructor(element) {\n this.element = element;\n }\n shouldIgnore(event) {\n if (!browser$1.samsungAndroid) return false;\n this.previousEvent = this.event;\n this.event = event;\n this.checkSamsungKeyboardBuggyModeStart();\n this.checkSamsungKeyboardBuggyModeEnd();\n return this.buggyMode;\n }\n\n // private\n\n // The Samsung keyboard on Android can enter a buggy state in which it emits a flurry of confused events that,\n // if processed, corrupts the editor. The buggy mode always starts with an insertText event, right after a\n // keydown event with for an \"Unidentified\" key, with the same text as the editor element, except for a few\n // extra whitespace, or exotic utf8, characters.\n checkSamsungKeyboardBuggyModeStart() {\n if (this.insertingLongTextAfterUnidentifiedChar() && differsInWhitespace(this.element.innerText, this.event.data)) {\n this.buggyMode = true;\n this.event.preventDefault();\n }\n }\n\n // The flurry of buggy events are always insertText. If we see any other type, it means it's over.\n checkSamsungKeyboardBuggyModeEnd() {\n if (this.buggyMode && this.event.inputType !== \"insertText\") {\n this.buggyMode = false;\n }\n }\n insertingLongTextAfterUnidentifiedChar() {\n var _this$event$data;\n return this.isBeforeInputInsertText() && this.previousEventWasUnidentifiedKeydown() && ((_this$event$data = this.event.data) === null || _this$event$data === void 0 ? void 0 : _this$event$data.length) > 50;\n }\n isBeforeInputInsertText() {\n return this.event.type === \"beforeinput\" && this.event.inputType === \"insertText\";\n }\n previousEventWasUnidentifiedKeydown() {\n var _this$previousEvent, _this$previousEvent2;\n return ((_this$previousEvent = this.previousEvent) === null || _this$previousEvent === void 0 ? void 0 : _this$previousEvent.type) === \"keydown\" && ((_this$previousEvent2 = this.previousEvent) === null || _this$previousEvent2 === void 0 ? void 0 : _this$previousEvent2.key) === \"Unidentified\";\n }\n}\nconst differsInWhitespace = (text1, text2) => {\n return normalize(text1) === normalize(text2);\n};\nconst whiteSpaceNormalizerRegexp = new RegExp(\"(\".concat(OBJECT_REPLACEMENT_CHARACTER, \"|\").concat(ZERO_WIDTH_SPACE, \"|\").concat(NON_BREAKING_SPACE, \"|\\\\s)+\"), \"g\");\nconst normalize = text => text.replace(whiteSpaceNormalizerRegexp, \" \").trim();\n\nclass InputController extends BasicObject {\n constructor(element) {\n super(...arguments);\n this.element = element;\n this.mutationObserver = new MutationObserver(this.element);\n this.mutationObserver.delegate = this;\n this.flakyKeyboardDetector = new FlakyAndroidKeyboardDetector(this.element);\n for (const eventName in this.constructor.events) {\n handleEvent(eventName, {\n onElement: this.element,\n withCallback: this.handlerFor(eventName)\n });\n }\n }\n elementDidMutate(mutationSummary) {}\n editorWillSyncDocumentView() {\n return this.mutationObserver.stop();\n }\n editorDidSyncDocumentView() {\n return this.mutationObserver.start();\n }\n requestRender() {\n var _this$delegate, _this$delegate$inputC;\n return (_this$delegate = this.delegate) === null || _this$delegate === void 0 || (_this$delegate$inputC = _this$delegate.inputControllerDidRequestRender) === null || _this$delegate$inputC === void 0 ? void 0 : _this$delegate$inputC.call(_this$delegate);\n }\n requestReparse() {\n var _this$delegate2, _this$delegate2$input;\n (_this$delegate2 = this.delegate) === null || _this$delegate2 === void 0 || (_this$delegate2$input = _this$delegate2.inputControllerDidRequestReparse) === null || _this$delegate2$input === void 0 || _this$delegate2$input.call(_this$delegate2);\n return this.requestRender();\n }\n attachFiles(files) {\n const operations = Array.from(files).map(file => new FileVerificationOperation(file));\n return Promise.all(operations).then(files => {\n this.handleInput(function () {\n var _this$delegate3, _this$responder;\n (_this$delegate3 = this.delegate) === null || _this$delegate3 === void 0 || _this$delegate3.inputControllerWillAttachFiles();\n (_this$responder = this.responder) === null || _this$responder === void 0 || _this$responder.insertFiles(files);\n return this.requestRender();\n });\n });\n }\n\n // Private\n\n handlerFor(eventName) {\n return event => {\n if (!event.defaultPrevented) {\n this.handleInput(() => {\n if (!innerElementIsActive(this.element)) {\n if (this.flakyKeyboardDetector.shouldIgnore(event)) return;\n this.eventName = eventName;\n this.constructor.events[eventName].call(this, event);\n }\n });\n }\n };\n }\n handleInput(callback) {\n try {\n var _this$delegate4;\n (_this$delegate4 = this.delegate) === null || _this$delegate4 === void 0 || _this$delegate4.inputControllerWillHandleInput();\n callback.call(this);\n } finally {\n var _this$delegate5;\n (_this$delegate5 = this.delegate) === null || _this$delegate5 === void 0 || _this$delegate5.inputControllerDidHandleInput();\n }\n }\n createLinkHTML(href, text) {\n const link = document.createElement(\"a\");\n link.href = href;\n link.textContent = text ? text : href;\n return link.outerHTML;\n }\n}\n_defineProperty(InputController, \"events\", {});\n\nvar _$codePointAt, _;\nconst {\n browser,\n keyNames\n} = config;\nlet pastedFileCount = 0;\nclass Level0InputController extends InputController {\n constructor() {\n super(...arguments);\n this.resetInputSummary();\n }\n setInputSummary() {\n let summary = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.inputSummary.eventName = this.eventName;\n for (const key in summary) {\n const value = summary[key];\n this.inputSummary[key] = value;\n }\n return this.inputSummary;\n }\n resetInputSummary() {\n this.inputSummary = {};\n }\n reset() {\n this.resetInputSummary();\n return selectionChangeObserver.reset();\n }\n\n // Mutation observer delegate\n\n elementDidMutate(mutationSummary) {\n if (this.isComposing()) {\n var _this$delegate, _this$delegate$inputC;\n return (_this$delegate = this.delegate) === null || _this$delegate === void 0 || (_this$delegate$inputC = _this$delegate.inputControllerDidAllowUnhandledInput) === null || _this$delegate$inputC === void 0 ? void 0 : _this$delegate$inputC.call(_this$delegate);\n } else {\n return this.handleInput(function () {\n if (this.mutationIsSignificant(mutationSummary)) {\n if (this.mutationIsExpected(mutationSummary)) {\n this.requestRender();\n } else {\n this.requestReparse();\n }\n }\n return this.reset();\n });\n }\n }\n mutationIsExpected(_ref) {\n let {\n textAdded,\n textDeleted\n } = _ref;\n if (this.inputSummary.preferDocument) {\n return true;\n }\n const mutationAdditionMatchesSummary = textAdded != null ? textAdded === this.inputSummary.textAdded : !this.inputSummary.textAdded;\n const mutationDeletionMatchesSummary = textDeleted != null ? this.inputSummary.didDelete : !this.inputSummary.didDelete;\n const unexpectedNewlineAddition = [\"\\n\", \" \\n\"].includes(textAdded) && !mutationAdditionMatchesSummary;\n const unexpectedNewlineDeletion = textDeleted === \"\\n\" && !mutationDeletionMatchesSummary;\n const singleUnexpectedNewline = unexpectedNewlineAddition && !unexpectedNewlineDeletion || unexpectedNewlineDeletion && !unexpectedNewlineAddition;\n if (singleUnexpectedNewline) {\n const range = this.getSelectedRange();\n if (range) {\n var _this$responder;\n const offset = unexpectedNewlineAddition ? textAdded.replace(/\\n$/, \"\").length || -1 : (textAdded === null || textAdded === void 0 ? void 0 : textAdded.length) || 1;\n if ((_this$responder = this.responder) !== null && _this$responder !== void 0 && _this$responder.positionIsBlockBreak(range[1] + offset)) {\n return true;\n }\n }\n }\n return mutationAdditionMatchesSummary && mutationDeletionMatchesSummary;\n }\n mutationIsSignificant(mutationSummary) {\n var _this$compositionInpu;\n const textChanged = Object.keys(mutationSummary).length > 0;\n const composedEmptyString = ((_this$compositionInpu = this.compositionInput) === null || _this$compositionInpu === void 0 ? void 0 : _this$compositionInpu.getEndData()) === \"\";\n return textChanged || !composedEmptyString;\n }\n\n // Private\n\n getCompositionInput() {\n if (this.isComposing()) {\n return this.compositionInput;\n } else {\n this.compositionInput = new CompositionInput(this);\n }\n }\n isComposing() {\n return this.compositionInput && !this.compositionInput.isEnded();\n }\n deleteInDirection(direction, event) {\n var _this$responder2;\n if (((_this$responder2 = this.responder) === null || _this$responder2 === void 0 ? void 0 : _this$responder2.deleteInDirection(direction)) === false) {\n if (event) {\n event.preventDefault();\n return this.requestRender();\n }\n } else {\n return this.setInputSummary({\n didDelete: true\n });\n }\n }\n serializeSelectionToDataTransfer(dataTransfer) {\n var _this$responder3;\n if (!dataTransferIsWritable(dataTransfer)) return;\n const document = (_this$responder3 = this.responder) === null || _this$responder3 === void 0 ? void 0 : _this$responder3.getSelectedDocument().toSerializableDocument();\n dataTransfer.setData(\"application/x-trix-document\", JSON.stringify(document));\n dataTransfer.setData(\"text/html\", DocumentView.render(document).innerHTML);\n dataTransfer.setData(\"text/plain\", document.toString().replace(/\\n$/, \"\"));\n return true;\n }\n canAcceptDataTransfer(dataTransfer) {\n const types = {};\n Array.from((dataTransfer === null || dataTransfer === void 0 ? void 0 : dataTransfer.types) || []).forEach(type => {\n types[type] = true;\n });\n return types.Files || types[\"application/x-trix-document\"] || types[\"text/html\"] || types[\"text/plain\"];\n }\n getPastedHTMLUsingHiddenElement(callback) {\n const selectedRange = this.getSelectedRange();\n const style = {\n position: \"absolute\",\n left: \"\".concat(window.pageXOffset, \"px\"),\n top: \"\".concat(window.pageYOffset, \"px\"),\n opacity: 0\n };\n const element = makeElement({\n style,\n tagName: \"div\",\n editable: true\n });\n document.body.appendChild(element);\n element.focus();\n return requestAnimationFrame(() => {\n const html = element.innerHTML;\n removeNode(element);\n this.setSelectedRange(selectedRange);\n return callback(html);\n });\n }\n}\n_defineProperty(Level0InputController, \"events\", {\n keydown(event) {\n if (!this.isComposing()) {\n this.resetInputSummary();\n }\n this.inputSummary.didInput = true;\n const keyName = keyNames[event.keyCode];\n if (keyName) {\n var _context2;\n let context = this.keys;\n [\"ctrl\", \"alt\", \"shift\", \"meta\"].forEach(modifier => {\n if (event[\"\".concat(modifier, \"Key\")]) {\n var _context;\n if (modifier === \"ctrl\") {\n modifier = \"control\";\n }\n context = (_context = context) === null || _context === void 0 ? void 0 : _context[modifier];\n }\n });\n if (((_context2 = context) === null || _context2 === void 0 ? void 0 : _context2[keyName]) != null) {\n this.setInputSummary({\n keyName\n });\n selectionChangeObserver.reset();\n context[keyName].call(this, event);\n }\n }\n if (keyEventIsKeyboardCommand(event)) {\n const character = String.fromCharCode(event.keyCode).toLowerCase();\n if (character) {\n var _this$delegate3;\n const keys = [\"alt\", \"shift\"].map(modifier => {\n if (event[\"\".concat(modifier, \"Key\")]) {\n return modifier;\n }\n }).filter(key => key);\n keys.push(character);\n if ((_this$delegate3 = this.delegate) !== null && _this$delegate3 !== void 0 && _this$delegate3.inputControllerDidReceiveKeyboardCommand(keys)) {\n event.preventDefault();\n }\n }\n }\n },\n keypress(event) {\n if (this.inputSummary.eventName != null) return;\n if (event.metaKey) return;\n if (event.ctrlKey && !event.altKey) return;\n const string = stringFromKeyEvent(event);\n if (string) {\n var _this$delegate4, _this$responder9;\n (_this$delegate4 = this.delegate) === null || _this$delegate4 === void 0 || _this$delegate4.inputControllerWillPerformTyping();\n (_this$responder9 = this.responder) === null || _this$responder9 === void 0 || _this$responder9.insertString(string);\n return this.setInputSummary({\n textAdded: string,\n didDelete: this.selectionIsExpanded()\n });\n }\n },\n textInput(event) {\n // Handle autocapitalization\n const {\n data\n } = event;\n const {\n textAdded\n } = this.inputSummary;\n if (textAdded && textAdded !== data && textAdded.toUpperCase() === data) {\n var _this$responder10;\n const range = this.getSelectedRange();\n this.setSelectedRange([range[0], range[1] + textAdded.length]);\n (_this$responder10 = this.responder) === null || _this$responder10 === void 0 || _this$responder10.insertString(data);\n this.setInputSummary({\n textAdded: data\n });\n return this.setSelectedRange(range);\n }\n },\n dragenter(event) {\n event.preventDefault();\n },\n dragstart(event) {\n var _this$delegate5, _this$delegate5$input;\n this.serializeSelectionToDataTransfer(event.dataTransfer);\n this.draggedRange = this.getSelectedRange();\n return (_this$delegate5 = this.delegate) === null || _this$delegate5 === void 0 || (_this$delegate5$input = _this$delegate5.inputControllerDidStartDrag) === null || _this$delegate5$input === void 0 ? void 0 : _this$delegate5$input.call(_this$delegate5);\n },\n dragover(event) {\n if (this.draggedRange || this.canAcceptDataTransfer(event.dataTransfer)) {\n event.preventDefault();\n const draggingPoint = {\n x: event.clientX,\n y: event.clientY\n };\n if (!objectsAreEqual(draggingPoint, this.draggingPoint)) {\n var _this$delegate6, _this$delegate6$input;\n this.draggingPoint = draggingPoint;\n return (_this$delegate6 = this.delegate) === null || _this$delegate6 === void 0 || (_this$delegate6$input = _this$delegate6.inputControllerDidReceiveDragOverPoint) === null || _this$delegate6$input === void 0 ? void 0 : _this$delegate6$input.call(_this$delegate6, this.draggingPoint);\n }\n }\n },\n dragend(event) {\n var _this$delegate7, _this$delegate7$input;\n (_this$delegate7 = this.delegate) === null || _this$delegate7 === void 0 || (_this$delegate7$input = _this$delegate7.inputControllerDidCancelDrag) === null || _this$delegate7$input === void 0 || _this$delegate7$input.call(_this$delegate7);\n this.draggedRange = null;\n this.draggingPoint = null;\n },\n drop(event) {\n var _event$dataTransfer, _this$responder11;\n event.preventDefault();\n const files = (_event$dataTransfer = event.dataTransfer) === null || _event$dataTransfer === void 0 ? void 0 : _event$dataTransfer.files;\n const documentJSON = event.dataTransfer.getData(\"application/x-trix-document\");\n const point = {\n x: event.clientX,\n y: event.clientY\n };\n (_this$responder11 = this.responder) === null || _this$responder11 === void 0 || _this$responder11.setLocationRangeFromPointRange(point);\n if (files !== null && files !== void 0 && files.length) {\n this.attachFiles(files);\n } else if (this.draggedRange) {\n var _this$delegate8, _this$responder12;\n (_this$delegate8 = this.delegate) === null || _this$delegate8 === void 0 || _this$delegate8.inputControllerWillMoveText();\n (_this$responder12 = this.responder) === null || _this$responder12 === void 0 || _this$responder12.moveTextFromRange(this.draggedRange);\n this.draggedRange = null;\n this.requestRender();\n } else if (documentJSON) {\n var _this$responder13;\n const document = Document.fromJSONString(documentJSON);\n (_this$responder13 = this.responder) === null || _this$responder13 === void 0 || _this$responder13.insertDocument(document);\n this.requestRender();\n }\n this.draggedRange = null;\n this.draggingPoint = null;\n },\n cut(event) {\n var _this$responder14;\n if ((_this$responder14 = this.responder) !== null && _this$responder14 !== void 0 && _this$responder14.selectionIsExpanded()) {\n var _this$delegate9;\n if (this.serializeSelectionToDataTransfer(event.clipboardData)) {\n event.preventDefault();\n }\n (_this$delegate9 = this.delegate) === null || _this$delegate9 === void 0 || _this$delegate9.inputControllerWillCutText();\n this.deleteInDirection(\"backward\");\n if (event.defaultPrevented) {\n return this.requestRender();\n }\n }\n },\n copy(event) {\n var _this$responder15;\n if ((_this$responder15 = this.responder) !== null && _this$responder15 !== void 0 && _this$responder15.selectionIsExpanded()) {\n if (this.serializeSelectionToDataTransfer(event.clipboardData)) {\n event.preventDefault();\n }\n }\n },\n paste(event) {\n const clipboard = event.clipboardData || event.testClipboardData;\n const paste = {\n clipboard\n };\n if (!clipboard || pasteEventIsCrippledSafariHTMLPaste(event)) {\n this.getPastedHTMLUsingHiddenElement(html => {\n var _this$delegate10, _this$responder16, _this$delegate11;\n paste.type = \"text/html\";\n paste.html = html;\n (_this$delegate10 = this.delegate) === null || _this$delegate10 === void 0 || _this$delegate10.inputControllerWillPaste(paste);\n (_this$responder16 = this.responder) === null || _this$responder16 === void 0 || _this$responder16.insertHTML(paste.html);\n this.requestRender();\n return (_this$delegate11 = this.delegate) === null || _this$delegate11 === void 0 ? void 0 : _this$delegate11.inputControllerDidPaste(paste);\n });\n return;\n }\n const href = clipboard.getData(\"URL\");\n const html = clipboard.getData(\"text/html\");\n const name = clipboard.getData(\"public.url-name\");\n if (href) {\n var _this$delegate12, _this$responder17, _this$delegate13;\n let string;\n paste.type = \"text/html\";\n if (name) {\n string = squishBreakableWhitespace(name).trim();\n } else {\n string = href;\n }\n paste.html = this.createLinkHTML(href, string);\n (_this$delegate12 = this.delegate) === null || _this$delegate12 === void 0 || _this$delegate12.inputControllerWillPaste(paste);\n this.setInputSummary({\n textAdded: string,\n didDelete: this.selectionIsExpanded()\n });\n (_this$responder17 = this.responder) === null || _this$responder17 === void 0 || _this$responder17.insertHTML(paste.html);\n this.requestRender();\n (_this$delegate13 = this.delegate) === null || _this$delegate13 === void 0 || _this$delegate13.inputControllerDidPaste(paste);\n } else if (dataTransferIsPlainText(clipboard)) {\n var _this$delegate14, _this$responder18, _this$delegate15;\n paste.type = \"text/plain\";\n paste.string = clipboard.getData(\"text/plain\");\n (_this$delegate14 = this.delegate) === null || _this$delegate14 === void 0 || _this$delegate14.inputControllerWillPaste(paste);\n this.setInputSummary({\n textAdded: paste.string,\n didDelete: this.selectionIsExpanded()\n });\n (_this$responder18 = this.responder) === null || _this$responder18 === void 0 || _this$responder18.insertString(paste.string);\n this.requestRender();\n (_this$delegate15 = this.delegate) === null || _this$delegate15 === void 0 || _this$delegate15.inputControllerDidPaste(paste);\n } else if (html) {\n var _this$delegate16, _this$responder19, _this$delegate17;\n paste.type = \"text/html\";\n paste.html = html;\n (_this$delegate16 = this.delegate) === null || _this$delegate16 === void 0 || _this$delegate16.inputControllerWillPaste(paste);\n (_this$responder19 = this.responder) === null || _this$responder19 === void 0 || _this$responder19.insertHTML(paste.html);\n this.requestRender();\n (_this$delegate17 = this.delegate) === null || _this$delegate17 === void 0 || _this$delegate17.inputControllerDidPaste(paste);\n } else if (Array.from(clipboard.types).includes(\"Files\")) {\n var _clipboard$items, _clipboard$items$getA;\n const file = (_clipboard$items = clipboard.items) === null || _clipboard$items === void 0 || (_clipboard$items = _clipboard$items[0]) === null || _clipboard$items === void 0 || (_clipboard$items$getA = _clipboard$items.getAsFile) === null || _clipboard$items$getA === void 0 ? void 0 : _clipboard$items$getA.call(_clipboard$items);\n if (file) {\n var _this$delegate18, _this$responder20, _this$delegate19;\n const extension = extensionForFile(file);\n if (!file.name && extension) {\n file.name = \"pasted-file-\".concat(++pastedFileCount, \".\").concat(extension);\n }\n paste.type = \"File\";\n paste.file = file;\n (_this$delegate18 = this.delegate) === null || _this$delegate18 === void 0 || _this$delegate18.inputControllerWillAttachFiles();\n (_this$responder20 = this.responder) === null || _this$responder20 === void 0 || _this$responder20.insertFile(paste.file);\n this.requestRender();\n (_this$delegate19 = this.delegate) === null || _this$delegate19 === void 0 || _this$delegate19.inputControllerDidPaste(paste);\n }\n }\n event.preventDefault();\n },\n compositionstart(event) {\n return this.getCompositionInput().start(event.data);\n },\n compositionupdate(event) {\n return this.getCompositionInput().update(event.data);\n },\n compositionend(event) {\n return this.getCompositionInput().end(event.data);\n },\n beforeinput(event) {\n this.inputSummary.didInput = true;\n },\n input(event) {\n this.inputSummary.didInput = true;\n return event.stopPropagation();\n }\n});\n_defineProperty(Level0InputController, \"keys\", {\n backspace(event) {\n var _this$delegate20;\n (_this$delegate20 = this.delegate) === null || _this$delegate20 === void 0 || _this$delegate20.inputControllerWillPerformTyping();\n return this.deleteInDirection(\"backward\", event);\n },\n delete(event) {\n var _this$delegate21;\n (_this$delegate21 = this.delegate) === null || _this$delegate21 === void 0 || _this$delegate21.inputControllerWillPerformTyping();\n return this.deleteInDirection(\"forward\", event);\n },\n return(event) {\n var _this$delegate22, _this$responder21;\n this.setInputSummary({\n preferDocument: true\n });\n (_this$delegate22 = this.delegate) === null || _this$delegate22 === void 0 || _this$delegate22.inputControllerWillPerformTyping();\n return (_this$responder21 = this.responder) === null || _this$responder21 === void 0 ? void 0 : _this$responder21.insertLineBreak();\n },\n tab(event) {\n var _this$responder22;\n if ((_this$responder22 = this.responder) !== null && _this$responder22 !== void 0 && _this$responder22.canIncreaseNestingLevel()) {\n var _this$responder23;\n (_this$responder23 = this.responder) === null || _this$responder23 === void 0 || _this$responder23.increaseNestingLevel();\n this.requestRender();\n event.preventDefault();\n }\n },\n left(event) {\n if (this.selectionIsInCursorTarget()) {\n var _this$responder24;\n event.preventDefault();\n return (_this$responder24 = this.responder) === null || _this$responder24 === void 0 ? void 0 : _this$responder24.moveCursorInDirection(\"backward\");\n }\n },\n right(event) {\n if (this.selectionIsInCursorTarget()) {\n var _this$responder25;\n event.preventDefault();\n return (_this$responder25 = this.responder) === null || _this$responder25 === void 0 ? void 0 : _this$responder25.moveCursorInDirection(\"forward\");\n }\n },\n control: {\n d(event) {\n var _this$delegate23;\n (_this$delegate23 = this.delegate) === null || _this$delegate23 === void 0 || _this$delegate23.inputControllerWillPerformTyping();\n return this.deleteInDirection(\"forward\", event);\n },\n h(event) {\n var _this$delegate24;\n (_this$delegate24 = this.delegate) === null || _this$delegate24 === void 0 || _this$delegate24.inputControllerWillPerformTyping();\n return this.deleteInDirection(\"backward\", event);\n },\n o(event) {\n var _this$delegate25, _this$responder26;\n event.preventDefault();\n (_this$delegate25 = this.delegate) === null || _this$delegate25 === void 0 || _this$delegate25.inputControllerWillPerformTyping();\n (_this$responder26 = this.responder) === null || _this$responder26 === void 0 || _this$responder26.insertString(\"\\n\", {\n updatePosition: false\n });\n return this.requestRender();\n }\n },\n shift: {\n return(event) {\n var _this$delegate26, _this$responder27;\n (_this$delegate26 = this.delegate) === null || _this$delegate26 === void 0 || _this$delegate26.inputControllerWillPerformTyping();\n (_this$responder27 = this.responder) === null || _this$responder27 === void 0 || _this$responder27.insertString(\"\\n\");\n this.requestRender();\n event.preventDefault();\n },\n tab(event) {\n var _this$responder28;\n if ((_this$responder28 = this.responder) !== null && _this$responder28 !== void 0 && _this$responder28.canDecreaseNestingLevel()) {\n var _this$responder29;\n (_this$responder29 = this.responder) === null || _this$responder29 === void 0 || _this$responder29.decreaseNestingLevel();\n this.requestRender();\n event.preventDefault();\n }\n },\n left(event) {\n if (this.selectionIsInCursorTarget()) {\n event.preventDefault();\n return this.expandSelectionInDirection(\"backward\");\n }\n },\n right(event) {\n if (this.selectionIsInCursorTarget()) {\n event.preventDefault();\n return this.expandSelectionInDirection(\"forward\");\n }\n }\n },\n alt: {\n backspace(event) {\n var _this$delegate27;\n this.setInputSummary({\n preferDocument: false\n });\n return (_this$delegate27 = this.delegate) === null || _this$delegate27 === void 0 ? void 0 : _this$delegate27.inputControllerWillPerformTyping();\n }\n },\n meta: {\n backspace(event) {\n var _this$delegate28;\n this.setInputSummary({\n preferDocument: false\n });\n return (_this$delegate28 = this.delegate) === null || _this$delegate28 === void 0 ? void 0 : _this$delegate28.inputControllerWillPerformTyping();\n }\n }\n});\nLevel0InputController.proxyMethod(\"responder?.getSelectedRange\");\nLevel0InputController.proxyMethod(\"responder?.setSelectedRange\");\nLevel0InputController.proxyMethod(\"responder?.expandSelectionInDirection\");\nLevel0InputController.proxyMethod(\"responder?.selectionIsInCursorTarget\");\nLevel0InputController.proxyMethod(\"responder?.selectionIsExpanded\");\nconst extensionForFile = file => {\n var _file$type;\n return (_file$type = file.type) === null || _file$type === void 0 || (_file$type = _file$type.match(/\\/(\\w+)$/)) === null || _file$type === void 0 ? void 0 : _file$type[1];\n};\nconst hasStringCodePointAt = !!((_$codePointAt = (_ = \" \").codePointAt) !== null && _$codePointAt !== void 0 && _$codePointAt.call(_, 0));\nconst stringFromKeyEvent = function (event) {\n if (event.key && hasStringCodePointAt && event.key.codePointAt(0) === event.keyCode) {\n return event.key;\n } else {\n let code;\n if (event.which === null) {\n code = event.keyCode;\n } else if (event.which !== 0 && event.charCode !== 0) {\n code = event.charCode;\n }\n if (code != null && keyNames[code] !== \"escape\") {\n return UTF16String.fromCodepoints([code]).toString();\n }\n }\n};\nconst pasteEventIsCrippledSafariHTMLPaste = function (event) {\n const paste = event.clipboardData;\n if (paste) {\n if (paste.types.includes(\"text/html\")) {\n // Answer is yes if there's any possibility of Paste and Match Style in Safari,\n // which is nearly impossible to detect confidently: https://bugs.webkit.org/show_bug.cgi?id=174165\n for (const type of paste.types) {\n const hasPasteboardFlavor = /^CorePasteboardFlavorType/.test(type);\n const hasReadableDynamicData = /^dyn\\./.test(type) && paste.getData(type);\n const mightBePasteAndMatchStyle = hasPasteboardFlavor || hasReadableDynamicData;\n if (mightBePasteAndMatchStyle) {\n return true;\n }\n }\n return false;\n } else {\n const isExternalHTMLPaste = paste.types.includes(\"com.apple.webarchive\");\n const isExternalRichTextPaste = paste.types.includes(\"com.apple.flat-rtfd\");\n return isExternalHTMLPaste || isExternalRichTextPaste;\n }\n }\n};\nclass CompositionInput extends BasicObject {\n constructor(inputController) {\n super(...arguments);\n this.inputController = inputController;\n this.responder = this.inputController.responder;\n this.delegate = this.inputController.delegate;\n this.inputSummary = this.inputController.inputSummary;\n this.data = {};\n }\n start(data) {\n this.data.start = data;\n if (this.isSignificant()) {\n var _this$responder5;\n if (this.inputSummary.eventName === \"keypress\" && this.inputSummary.textAdded) {\n var _this$responder4;\n (_this$responder4 = this.responder) === null || _this$responder4 === void 0 || _this$responder4.deleteInDirection(\"left\");\n }\n if (!this.selectionIsExpanded()) {\n this.insertPlaceholder();\n this.requestRender();\n }\n this.range = (_this$responder5 = this.responder) === null || _this$responder5 === void 0 ? void 0 : _this$responder5.getSelectedRange();\n }\n }\n update(data) {\n this.data.update = data;\n if (this.isSignificant()) {\n const range = this.selectPlaceholder();\n if (range) {\n this.forgetPlaceholder();\n this.range = range;\n }\n }\n }\n end(data) {\n this.data.end = data;\n if (this.isSignificant()) {\n this.forgetPlaceholder();\n if (this.canApplyToDocument()) {\n var _this$delegate2, _this$responder6, _this$responder7, _this$responder8;\n this.setInputSummary({\n preferDocument: true,\n didInput: false\n });\n (_this$delegate2 = this.delegate) === null || _this$delegate2 === void 0 || _this$delegate2.inputControllerWillPerformTyping();\n (_this$responder6 = this.responder) === null || _this$responder6 === void 0 || _this$responder6.setSelectedRange(this.range);\n (_this$responder7 = this.responder) === null || _this$responder7 === void 0 || _this$responder7.insertString(this.data.end);\n return (_this$responder8 = this.responder) === null || _this$responder8 === void 0 ? void 0 : _this$responder8.setSelectedRange(this.range[0] + this.data.end.length);\n } else if (this.data.start != null || this.data.update != null) {\n this.requestReparse();\n return this.inputController.reset();\n }\n } else {\n return this.inputController.reset();\n }\n }\n getEndData() {\n return this.data.end;\n }\n isEnded() {\n return this.getEndData() != null;\n }\n isSignificant() {\n if (browser.composesExistingText) {\n return this.inputSummary.didInput;\n } else {\n return true;\n }\n }\n\n // Private\n\n canApplyToDocument() {\n var _this$data$start, _this$data$end;\n return ((_this$data$start = this.data.start) === null || _this$data$start === void 0 ? void 0 : _this$data$start.length) === 0 && ((_this$data$end = this.data.end) === null || _this$data$end === void 0 ? void 0 : _this$data$end.length) > 0 && this.range;\n }\n}\nCompositionInput.proxyMethod(\"inputController.setInputSummary\");\nCompositionInput.proxyMethod(\"inputController.requestRender\");\nCompositionInput.proxyMethod(\"inputController.requestReparse\");\nCompositionInput.proxyMethod(\"responder?.selectionIsExpanded\");\nCompositionInput.proxyMethod(\"responder?.insertPlaceholder\");\nCompositionInput.proxyMethod(\"responder?.selectPlaceholder\");\nCompositionInput.proxyMethod(\"responder?.forgetPlaceholder\");\n\nclass Level2InputController extends InputController {\n constructor() {\n super(...arguments);\n this.render = this.render.bind(this);\n }\n elementDidMutate() {\n if (this.scheduledRender) {\n if (this.composing) {\n var _this$delegate, _this$delegate$inputC;\n return (_this$delegate = this.delegate) === null || _this$delegate === void 0 || (_this$delegate$inputC = _this$delegate.inputControllerDidAllowUnhandledInput) === null || _this$delegate$inputC === void 0 ? void 0 : _this$delegate$inputC.call(_this$delegate);\n }\n } else {\n return this.reparse();\n }\n }\n scheduleRender() {\n return this.scheduledRender ? this.scheduledRender : this.scheduledRender = requestAnimationFrame(this.render);\n }\n render() {\n var _this$afterRender;\n cancelAnimationFrame(this.scheduledRender);\n this.scheduledRender = null;\n if (!this.composing) {\n var _this$delegate2;\n (_this$delegate2 = this.delegate) === null || _this$delegate2 === void 0 || _this$delegate2.render();\n }\n (_this$afterRender = this.afterRender) === null || _this$afterRender === void 0 || _this$afterRender.call(this);\n this.afterRender = null;\n }\n reparse() {\n var _this$delegate3;\n return (_this$delegate3 = this.delegate) === null || _this$delegate3 === void 0 ? void 0 : _this$delegate3.reparse();\n }\n\n // Responder helpers\n\n insertString() {\n var _this$delegate4;\n let string = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n let options = arguments.length > 1 ? arguments[1] : undefined;\n (_this$delegate4 = this.delegate) === null || _this$delegate4 === void 0 || _this$delegate4.inputControllerWillPerformTyping();\n return this.withTargetDOMRange(function () {\n var _this$responder;\n return (_this$responder = this.responder) === null || _this$responder === void 0 ? void 0 : _this$responder.insertString(string, options);\n });\n }\n toggleAttributeIfSupported(attributeName) {\n if (getAllAttributeNames().includes(attributeName)) {\n var _this$delegate5;\n (_this$delegate5 = this.delegate) === null || _this$delegate5 === void 0 || _this$delegate5.inputControllerWillPerformFormatting(attributeName);\n return this.withTargetDOMRange(function () {\n var _this$responder2;\n return (_this$responder2 = this.responder) === null || _this$responder2 === void 0 ? void 0 : _this$responder2.toggleCurrentAttribute(attributeName);\n });\n }\n }\n activateAttributeIfSupported(attributeName, value) {\n if (getAllAttributeNames().includes(attributeName)) {\n var _this$delegate6;\n (_this$delegate6 = this.delegate) === null || _this$delegate6 === void 0 || _this$delegate6.inputControllerWillPerformFormatting(attributeName);\n return this.withTargetDOMRange(function () {\n var _this$responder3;\n return (_this$responder3 = this.responder) === null || _this$responder3 === void 0 ? void 0 : _this$responder3.setCurrentAttribute(attributeName, value);\n });\n }\n }\n deleteInDirection(direction) {\n let {\n recordUndoEntry\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n recordUndoEntry: true\n };\n if (recordUndoEntry) {\n var _this$delegate7;\n (_this$delegate7 = this.delegate) === null || _this$delegate7 === void 0 || _this$delegate7.inputControllerWillPerformTyping();\n }\n const perform = () => {\n var _this$responder4;\n return (_this$responder4 = this.responder) === null || _this$responder4 === void 0 ? void 0 : _this$responder4.deleteInDirection(direction);\n };\n const domRange = this.getTargetDOMRange({\n minLength: this.composing ? 1 : 2\n });\n if (domRange) {\n return this.withTargetDOMRange(domRange, perform);\n } else {\n return perform();\n }\n }\n\n // Selection helpers\n\n withTargetDOMRange(domRange, fn) {\n if (typeof domRange === \"function\") {\n fn = domRange;\n domRange = this.getTargetDOMRange();\n }\n if (domRange) {\n var _this$responder5;\n return (_this$responder5 = this.responder) === null || _this$responder5 === void 0 ? void 0 : _this$responder5.withTargetDOMRange(domRange, fn.bind(this));\n } else {\n selectionChangeObserver.reset();\n return fn.call(this);\n }\n }\n getTargetDOMRange() {\n var _this$event$getTarget, _this$event;\n let {\n minLength\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n minLength: 0\n };\n const targetRanges = (_this$event$getTarget = (_this$event = this.event).getTargetRanges) === null || _this$event$getTarget === void 0 ? void 0 : _this$event$getTarget.call(_this$event);\n if (targetRanges) {\n if (targetRanges.length) {\n const domRange = staticRangeToRange(targetRanges[0]);\n if (minLength === 0 || domRange.toString().length >= minLength) {\n return domRange;\n }\n }\n }\n }\n withEvent(event, fn) {\n let result;\n this.event = event;\n try {\n result = fn.call(this);\n } finally {\n this.event = null;\n }\n return result;\n }\n}\n_defineProperty(Level2InputController, \"events\", {\n keydown(event) {\n if (keyEventIsKeyboardCommand(event)) {\n var _this$delegate8;\n const command = keyboardCommandFromKeyEvent(event);\n if ((_this$delegate8 = this.delegate) !== null && _this$delegate8 !== void 0 && _this$delegate8.inputControllerDidReceiveKeyboardCommand(command)) {\n event.preventDefault();\n }\n } else {\n let name = event.key;\n if (event.altKey) {\n name += \"+Alt\";\n }\n if (event.shiftKey) {\n name += \"+Shift\";\n }\n const handler = this.constructor.keys[name];\n if (handler) {\n return this.withEvent(event, handler);\n }\n }\n },\n // Handle paste event to work around beforeinput.insertFromPaste browser bugs.\n // Safe to remove each condition once fixed upstream.\n paste(event) {\n var _event$clipboardData;\n // https://bugs.webkit.org/show_bug.cgi?id=194921\n let paste;\n const href = (_event$clipboardData = event.clipboardData) === null || _event$clipboardData === void 0 ? void 0 : _event$clipboardData.getData(\"URL\");\n if (pasteEventHasFilesOnly(event)) {\n event.preventDefault();\n return this.attachFiles(event.clipboardData.files);\n\n // https://bugs.chromium.org/p/chromium/issues/detail?id=934448\n } else if (pasteEventHasPlainTextOnly(event)) {\n var _this$delegate9, _this$responder6, _this$delegate10;\n event.preventDefault();\n paste = {\n type: \"text/plain\",\n string: event.clipboardData.getData(\"text/plain\")\n };\n (_this$delegate9 = this.delegate) === null || _this$delegate9 === void 0 || _this$delegate9.inputControllerWillPaste(paste);\n (_this$responder6 = this.responder) === null || _this$responder6 === void 0 || _this$responder6.insertString(paste.string);\n this.render();\n return (_this$delegate10 = this.delegate) === null || _this$delegate10 === void 0 ? void 0 : _this$delegate10.inputControllerDidPaste(paste);\n\n // https://bugs.webkit.org/show_bug.cgi?id=196702\n } else if (href) {\n var _this$delegate11, _this$responder7, _this$delegate12;\n event.preventDefault();\n paste = {\n type: \"text/html\",\n html: this.createLinkHTML(href)\n };\n (_this$delegate11 = this.delegate) === null || _this$delegate11 === void 0 || _this$delegate11.inputControllerWillPaste(paste);\n (_this$responder7 = this.responder) === null || _this$responder7 === void 0 || _this$responder7.insertHTML(paste.html);\n this.render();\n return (_this$delegate12 = this.delegate) === null || _this$delegate12 === void 0 ? void 0 : _this$delegate12.inputControllerDidPaste(paste);\n }\n },\n beforeinput(event) {\n const handler = this.constructor.inputTypes[event.inputType];\n\n // Handles bug with Siri dictation on iOS 18+.\n if (!event.inputType) {\n this.render();\n }\n if (handler) {\n this.withEvent(event, handler);\n this.scheduleRender();\n }\n },\n input(event) {\n selectionChangeObserver.reset();\n },\n dragstart(event) {\n var _this$responder8;\n if ((_this$responder8 = this.responder) !== null && _this$responder8 !== void 0 && _this$responder8.selectionContainsAttachments()) {\n var _this$responder9;\n event.dataTransfer.setData(\"application/x-trix-dragging\", true);\n this.dragging = {\n range: (_this$responder9 = this.responder) === null || _this$responder9 === void 0 ? void 0 : _this$responder9.getSelectedRange(),\n point: pointFromEvent(event)\n };\n }\n },\n dragenter(event) {\n if (dragEventHasFiles(event)) {\n event.preventDefault();\n }\n },\n dragover(event) {\n if (this.dragging) {\n event.preventDefault();\n const point = pointFromEvent(event);\n if (!objectsAreEqual(point, this.dragging.point)) {\n var _this$responder10;\n this.dragging.point = point;\n return (_this$responder10 = this.responder) === null || _this$responder10 === void 0 ? void 0 : _this$responder10.setLocationRangeFromPointRange(point);\n }\n } else if (dragEventHasFiles(event)) {\n event.preventDefault();\n }\n },\n drop(event) {\n if (this.dragging) {\n var _this$delegate13, _this$responder11;\n event.preventDefault();\n (_this$delegate13 = this.delegate) === null || _this$delegate13 === void 0 || _this$delegate13.inputControllerWillMoveText();\n (_this$responder11 = this.responder) === null || _this$responder11 === void 0 || _this$responder11.moveTextFromRange(this.dragging.range);\n this.dragging = null;\n return this.scheduleRender();\n } else if (dragEventHasFiles(event)) {\n var _this$responder12;\n event.preventDefault();\n const point = pointFromEvent(event);\n (_this$responder12 = this.responder) === null || _this$responder12 === void 0 || _this$responder12.setLocationRangeFromPointRange(point);\n return this.attachFiles(event.dataTransfer.files);\n }\n },\n dragend() {\n if (this.dragging) {\n var _this$responder13;\n (_this$responder13 = this.responder) === null || _this$responder13 === void 0 || _this$responder13.setSelectedRange(this.dragging.range);\n this.dragging = null;\n }\n },\n compositionend(event) {\n if (this.composing) {\n this.composing = false;\n if (!browser$1.recentAndroid) this.scheduleRender();\n }\n }\n});\n_defineProperty(Level2InputController, \"keys\", {\n ArrowLeft() {\n var _this$responder14;\n if ((_this$responder14 = this.responder) !== null && _this$responder14 !== void 0 && _this$responder14.shouldManageMovingCursorInDirection(\"backward\")) {\n var _this$responder15;\n this.event.preventDefault();\n return (_this$responder15 = this.responder) === null || _this$responder15 === void 0 ? void 0 : _this$responder15.moveCursorInDirection(\"backward\");\n }\n },\n ArrowRight() {\n var _this$responder16;\n if ((_this$responder16 = this.responder) !== null && _this$responder16 !== void 0 && _this$responder16.shouldManageMovingCursorInDirection(\"forward\")) {\n var _this$responder17;\n this.event.preventDefault();\n return (_this$responder17 = this.responder) === null || _this$responder17 === void 0 ? void 0 : _this$responder17.moveCursorInDirection(\"forward\");\n }\n },\n Backspace() {\n var _this$responder18;\n if ((_this$responder18 = this.responder) !== null && _this$responder18 !== void 0 && _this$responder18.shouldManageDeletingInDirection(\"backward\")) {\n var _this$delegate14, _this$responder19;\n this.event.preventDefault();\n (_this$delegate14 = this.delegate) === null || _this$delegate14 === void 0 || _this$delegate14.inputControllerWillPerformTyping();\n (_this$responder19 = this.responder) === null || _this$responder19 === void 0 || _this$responder19.deleteInDirection(\"backward\");\n return this.render();\n }\n },\n Tab() {\n var _this$responder20;\n if ((_this$responder20 = this.responder) !== null && _this$responder20 !== void 0 && _this$responder20.canIncreaseNestingLevel()) {\n var _this$responder21;\n this.event.preventDefault();\n (_this$responder21 = this.responder) === null || _this$responder21 === void 0 || _this$responder21.increaseNestingLevel();\n return this.render();\n }\n },\n \"Tab+Shift\"() {\n var _this$responder22;\n if ((_this$responder22 = this.responder) !== null && _this$responder22 !== void 0 && _this$responder22.canDecreaseNestingLevel()) {\n var _this$responder23;\n this.event.preventDefault();\n (_this$responder23 = this.responder) === null || _this$responder23 === void 0 || _this$responder23.decreaseNestingLevel();\n return this.render();\n }\n }\n});\n_defineProperty(Level2InputController, \"inputTypes\", {\n deleteByComposition() {\n return this.deleteInDirection(\"backward\", {\n recordUndoEntry: false\n });\n },\n deleteByCut() {\n return this.deleteInDirection(\"backward\");\n },\n deleteByDrag() {\n this.event.preventDefault();\n return this.withTargetDOMRange(function () {\n var _this$responder24;\n this.deleteByDragRange = (_this$responder24 = this.responder) === null || _this$responder24 === void 0 ? void 0 : _this$responder24.getSelectedRange();\n });\n },\n deleteCompositionText() {\n return this.deleteInDirection(\"backward\", {\n recordUndoEntry: false\n });\n },\n deleteContent() {\n return this.deleteInDirection(\"backward\");\n },\n deleteContentBackward() {\n return this.deleteInDirection(\"backward\");\n },\n deleteContentForward() {\n return this.deleteInDirection(\"forward\");\n },\n deleteEntireSoftLine() {\n return this.deleteInDirection(\"forward\");\n },\n deleteHardLineBackward() {\n return this.deleteInDirection(\"backward\");\n },\n deleteHardLineForward() {\n return this.deleteInDirection(\"forward\");\n },\n deleteSoftLineBackward() {\n return this.deleteInDirection(\"backward\");\n },\n deleteSoftLineForward() {\n return this.deleteInDirection(\"forward\");\n },\n deleteWordBackward() {\n return this.deleteInDirection(\"backward\");\n },\n deleteWordForward() {\n return this.deleteInDirection(\"forward\");\n },\n formatBackColor() {\n return this.activateAttributeIfSupported(\"backgroundColor\", this.event.data);\n },\n formatBold() {\n return this.toggleAttributeIfSupported(\"bold\");\n },\n formatFontColor() {\n return this.activateAttributeIfSupported(\"color\", this.event.data);\n },\n formatFontName() {\n return this.activateAttributeIfSupported(\"font\", this.event.data);\n },\n formatIndent() {\n var _this$responder25;\n if ((_this$responder25 = this.responder) !== null && _this$responder25 !== void 0 && _this$responder25.canIncreaseNestingLevel()) {\n return this.withTargetDOMRange(function () {\n var _this$responder26;\n return (_this$responder26 = this.responder) === null || _this$responder26 === void 0 ? void 0 : _this$responder26.increaseNestingLevel();\n });\n }\n },\n formatItalic() {\n return this.toggleAttributeIfSupported(\"italic\");\n },\n formatJustifyCenter() {\n return this.toggleAttributeIfSupported(\"justifyCenter\");\n },\n formatJustifyFull() {\n return this.toggleAttributeIfSupported(\"justifyFull\");\n },\n formatJustifyLeft() {\n return this.toggleAttributeIfSupported(\"justifyLeft\");\n },\n formatJustifyRight() {\n return this.toggleAttributeIfSupported(\"justifyRight\");\n },\n formatOutdent() {\n var _this$responder27;\n if ((_this$responder27 = this.responder) !== null && _this$responder27 !== void 0 && _this$responder27.canDecreaseNestingLevel()) {\n return this.withTargetDOMRange(function () {\n var _this$responder28;\n return (_this$responder28 = this.responder) === null || _this$responder28 === void 0 ? void 0 : _this$responder28.decreaseNestingLevel();\n });\n }\n },\n formatRemove() {\n this.withTargetDOMRange(function () {\n for (const attributeName in (_this$responder29 = this.responder) === null || _this$responder29 === void 0 ? void 0 : _this$responder29.getCurrentAttributes()) {\n var _this$responder29, _this$responder30;\n (_this$responder30 = this.responder) === null || _this$responder30 === void 0 || _this$responder30.removeCurrentAttribute(attributeName);\n }\n });\n },\n formatSetBlockTextDirection() {\n return this.activateAttributeIfSupported(\"blockDir\", this.event.data);\n },\n formatSetInlineTextDirection() {\n return this.activateAttributeIfSupported(\"textDir\", this.event.data);\n },\n formatStrikeThrough() {\n return this.toggleAttributeIfSupported(\"strike\");\n },\n formatSubscript() {\n return this.toggleAttributeIfSupported(\"sub\");\n },\n formatSuperscript() {\n return this.toggleAttributeIfSupported(\"sup\");\n },\n formatUnderline() {\n return this.toggleAttributeIfSupported(\"underline\");\n },\n historyRedo() {\n var _this$delegate15;\n return (_this$delegate15 = this.delegate) === null || _this$delegate15 === void 0 ? void 0 : _this$delegate15.inputControllerWillPerformRedo();\n },\n historyUndo() {\n var _this$delegate16;\n return (_this$delegate16 = this.delegate) === null || _this$delegate16 === void 0 ? void 0 : _this$delegate16.inputControllerWillPerformUndo();\n },\n insertCompositionText() {\n this.composing = true;\n return this.insertString(this.event.data);\n },\n insertFromComposition() {\n this.composing = false;\n return this.insertString(this.event.data);\n },\n insertFromDrop() {\n const range = this.deleteByDragRange;\n if (range) {\n var _this$delegate17;\n this.deleteByDragRange = null;\n (_this$delegate17 = this.delegate) === null || _this$delegate17 === void 0 || _this$delegate17.inputControllerWillMoveText();\n return this.withTargetDOMRange(function () {\n var _this$responder31;\n return (_this$responder31 = this.responder) === null || _this$responder31 === void 0 ? void 0 : _this$responder31.moveTextFromRange(range);\n });\n }\n },\n insertFromPaste() {\n const {\n dataTransfer\n } = this.event;\n const paste = {\n dataTransfer\n };\n const href = dataTransfer.getData(\"URL\");\n const html = dataTransfer.getData(\"text/html\");\n if (href) {\n var _this$delegate18;\n let string;\n this.event.preventDefault();\n paste.type = \"text/html\";\n const name = dataTransfer.getData(\"public.url-name\");\n if (name) {\n string = squishBreakableWhitespace(name).trim();\n } else {\n string = href;\n }\n paste.html = this.createLinkHTML(href, string);\n (_this$delegate18 = this.delegate) === null || _this$delegate18 === void 0 || _this$delegate18.inputControllerWillPaste(paste);\n this.withTargetDOMRange(function () {\n var _this$responder32;\n return (_this$responder32 = this.responder) === null || _this$responder32 === void 0 ? void 0 : _this$responder32.insertHTML(paste.html);\n });\n this.afterRender = () => {\n var _this$delegate19;\n return (_this$delegate19 = this.delegate) === null || _this$delegate19 === void 0 ? void 0 : _this$delegate19.inputControllerDidPaste(paste);\n };\n } else if (dataTransferIsPlainText(dataTransfer)) {\n var _this$delegate20;\n paste.type = \"text/plain\";\n paste.string = dataTransfer.getData(\"text/plain\");\n (_this$delegate20 = this.delegate) === null || _this$delegate20 === void 0 || _this$delegate20.inputControllerWillPaste(paste);\n this.withTargetDOMRange(function () {\n var _this$responder33;\n return (_this$responder33 = this.responder) === null || _this$responder33 === void 0 ? void 0 : _this$responder33.insertString(paste.string);\n });\n this.afterRender = () => {\n var _this$delegate21;\n return (_this$delegate21 = this.delegate) === null || _this$delegate21 === void 0 ? void 0 : _this$delegate21.inputControllerDidPaste(paste);\n };\n } else if (processableFilePaste(this.event)) {\n var _this$delegate22;\n paste.type = \"File\";\n paste.file = dataTransfer.files[0];\n (_this$delegate22 = this.delegate) === null || _this$delegate22 === void 0 || _this$delegate22.inputControllerWillPaste(paste);\n this.withTargetDOMRange(function () {\n var _this$responder34;\n return (_this$responder34 = this.responder) === null || _this$responder34 === void 0 ? void 0 : _this$responder34.insertFile(paste.file);\n });\n this.afterRender = () => {\n var _this$delegate23;\n return (_this$delegate23 = this.delegate) === null || _this$delegate23 === void 0 ? void 0 : _this$delegate23.inputControllerDidPaste(paste);\n };\n } else if (html) {\n var _this$delegate24;\n this.event.preventDefault();\n paste.type = \"text/html\";\n paste.html = html;\n (_this$delegate24 = this.delegate) === null || _this$delegate24 === void 0 || _this$delegate24.inputControllerWillPaste(paste);\n this.withTargetDOMRange(function () {\n var _this$responder35;\n return (_this$responder35 = this.responder) === null || _this$responder35 === void 0 ? void 0 : _this$responder35.insertHTML(paste.html);\n });\n this.afterRender = () => {\n var _this$delegate25;\n return (_this$delegate25 = this.delegate) === null || _this$delegate25 === void 0 ? void 0 : _this$delegate25.inputControllerDidPaste(paste);\n };\n }\n },\n insertFromYank() {\n return this.insertString(this.event.data);\n },\n insertLineBreak() {\n return this.insertString(\"\\n\");\n },\n insertLink() {\n return this.activateAttributeIfSupported(\"href\", this.event.data);\n },\n insertOrderedList() {\n return this.toggleAttributeIfSupported(\"number\");\n },\n insertParagraph() {\n var _this$delegate26;\n (_this$delegate26 = this.delegate) === null || _this$delegate26 === void 0 || _this$delegate26.inputControllerWillPerformTyping();\n return this.withTargetDOMRange(function () {\n var _this$responder36;\n return (_this$responder36 = this.responder) === null || _this$responder36 === void 0 ? void 0 : _this$responder36.insertLineBreak();\n });\n },\n insertReplacementText() {\n const replacement = this.event.dataTransfer.getData(\"text/plain\");\n const domRange = this.event.getTargetRanges()[0];\n this.withTargetDOMRange(domRange, () => {\n this.insertString(replacement, {\n updatePosition: false\n });\n });\n },\n insertText() {\n var _this$event$dataTrans;\n return this.insertString(this.event.data || ((_this$event$dataTrans = this.event.dataTransfer) === null || _this$event$dataTrans === void 0 ? void 0 : _this$event$dataTrans.getData(\"text/plain\")));\n },\n insertTranspose() {\n return this.insertString(this.event.data);\n },\n insertUnorderedList() {\n return this.toggleAttributeIfSupported(\"bullet\");\n }\n});\nconst staticRangeToRange = function (staticRange) {\n const range = document.createRange();\n range.setStart(staticRange.startContainer, staticRange.startOffset);\n range.setEnd(staticRange.endContainer, staticRange.endOffset);\n return range;\n};\n\n// Event helpers\n\nconst dragEventHasFiles = event => {\n var _event$dataTransfer;\n return Array.from(((_event$dataTransfer = event.dataTransfer) === null || _event$dataTransfer === void 0 ? void 0 : _event$dataTransfer.types) || []).includes(\"Files\");\n};\nconst processableFilePaste = event => {\n var _event$dataTransfer$f;\n // Paste events that only have files are handled by the paste event handler,\n // to work around Safari not supporting beforeinput.insertFromPaste for files.\n\n // MS Office text pastes include a file with a screenshot of the text, but we should\n // handle them as text pastes.\n return ((_event$dataTransfer$f = event.dataTransfer.files) === null || _event$dataTransfer$f === void 0 ? void 0 : _event$dataTransfer$f[0]) && !pasteEventHasFilesOnly(event) && !dataTransferIsMsOfficePaste(event);\n};\nconst pasteEventHasFilesOnly = function (event) {\n const clipboard = event.clipboardData;\n if (clipboard) {\n const fileTypes = Array.from(clipboard.types).filter(type => type.match(/file/i)); // \"Files\", \"application/x-moz-file\"\n return fileTypes.length === clipboard.types.length && clipboard.files.length >= 1;\n }\n};\nconst pasteEventHasPlainTextOnly = function (event) {\n const clipboard = event.clipboardData;\n if (clipboard) {\n return clipboard.types.includes(\"text/plain\") && clipboard.types.length === 1;\n }\n};\nconst keyboardCommandFromKeyEvent = function (event) {\n const command = [];\n if (event.altKey) {\n command.push(\"alt\");\n }\n if (event.shiftKey) {\n command.push(\"shift\");\n }\n command.push(event.key);\n return command;\n};\nconst pointFromEvent = event => ({\n x: event.clientX,\n y: event.clientY\n});\n\nconst attributeButtonSelector = \"[data-trix-attribute]\";\nconst actionButtonSelector = \"[data-trix-action]\";\nconst toolbarButtonSelector = \"\".concat(attributeButtonSelector, \", \").concat(actionButtonSelector);\nconst dialogSelector = \"[data-trix-dialog]\";\nconst activeDialogSelector = \"\".concat(dialogSelector, \"[data-trix-active]\");\nconst dialogButtonSelector = \"\".concat(dialogSelector, \" [data-trix-method]\");\nconst dialogInputSelector = \"\".concat(dialogSelector, \" [data-trix-input]\");\nconst getInputForDialog = (element, attributeName) => {\n if (!attributeName) {\n attributeName = getAttributeName(element);\n }\n return element.querySelector(\"[data-trix-input][name='\".concat(attributeName, \"']\"));\n};\nconst getActionName = element => element.getAttribute(\"data-trix-action\");\nconst getAttributeName = element => {\n return element.getAttribute(\"data-trix-attribute\") || element.getAttribute(\"data-trix-dialog-attribute\");\n};\nconst getDialogName = element => element.getAttribute(\"data-trix-dialog\");\nclass ToolbarController extends BasicObject {\n constructor(element) {\n super(element);\n this.didClickActionButton = this.didClickActionButton.bind(this);\n this.didClickAttributeButton = this.didClickAttributeButton.bind(this);\n this.didClickDialogButton = this.didClickDialogButton.bind(this);\n this.didKeyDownDialogInput = this.didKeyDownDialogInput.bind(this);\n this.element = element;\n this.attributes = {};\n this.actions = {};\n this.resetDialogInputs();\n handleEvent(\"mousedown\", {\n onElement: this.element,\n matchingSelector: actionButtonSelector,\n withCallback: this.didClickActionButton\n });\n handleEvent(\"mousedown\", {\n onElement: this.element,\n matchingSelector: attributeButtonSelector,\n withCallback: this.didClickAttributeButton\n });\n handleEvent(\"click\", {\n onElement: this.element,\n matchingSelector: toolbarButtonSelector,\n preventDefault: true\n });\n handleEvent(\"click\", {\n onElement: this.element,\n matchingSelector: dialogButtonSelector,\n withCallback: this.didClickDialogButton\n });\n handleEvent(\"keydown\", {\n onElement: this.element,\n matchingSelector: dialogInputSelector,\n withCallback: this.didKeyDownDialogInput\n });\n }\n\n // Event handlers\n\n didClickActionButton(event, element) {\n var _this$delegate;\n (_this$delegate = this.delegate) === null || _this$delegate === void 0 || _this$delegate.toolbarDidClickButton();\n event.preventDefault();\n const actionName = getActionName(element);\n if (this.getDialog(actionName)) {\n return this.toggleDialog(actionName);\n } else {\n var _this$delegate2;\n return (_this$delegate2 = this.delegate) === null || _this$delegate2 === void 0 ? void 0 : _this$delegate2.toolbarDidInvokeAction(actionName, element);\n }\n }\n didClickAttributeButton(event, element) {\n var _this$delegate3;\n (_this$delegate3 = this.delegate) === null || _this$delegate3 === void 0 || _this$delegate3.toolbarDidClickButton();\n event.preventDefault();\n const attributeName = getAttributeName(element);\n if (this.getDialog(attributeName)) {\n this.toggleDialog(attributeName);\n } else {\n var _this$delegate4;\n (_this$delegate4 = this.delegate) === null || _this$delegate4 === void 0 || _this$delegate4.toolbarDidToggleAttribute(attributeName);\n }\n return this.refreshAttributeButtons();\n }\n didClickDialogButton(event, element) {\n const dialogElement = findClosestElementFromNode(element, {\n matchingSelector: dialogSelector\n });\n const method = element.getAttribute(\"data-trix-method\");\n return this[method].call(this, dialogElement);\n }\n didKeyDownDialogInput(event, element) {\n if (event.keyCode === 13) {\n // Enter key\n event.preventDefault();\n const attribute = element.getAttribute(\"name\");\n const dialog = this.getDialog(attribute);\n this.setAttribute(dialog);\n }\n if (event.keyCode === 27) {\n // Escape key\n event.preventDefault();\n return this.hideDialog();\n }\n }\n\n // Action buttons\n\n updateActions(actions) {\n this.actions = actions;\n return this.refreshActionButtons();\n }\n refreshActionButtons() {\n return this.eachActionButton((element, actionName) => {\n element.disabled = this.actions[actionName] === false;\n });\n }\n eachActionButton(callback) {\n return Array.from(this.element.querySelectorAll(actionButtonSelector)).map(element => callback(element, getActionName(element)));\n }\n\n // Attribute buttons\n\n updateAttributes(attributes) {\n this.attributes = attributes;\n return this.refreshAttributeButtons();\n }\n refreshAttributeButtons() {\n return this.eachAttributeButton((element, attributeName) => {\n element.disabled = this.attributes[attributeName] === false;\n if (this.attributes[attributeName] || this.dialogIsVisible(attributeName)) {\n element.setAttribute(\"data-trix-active\", \"\");\n return element.classList.add(\"trix-active\");\n } else {\n element.removeAttribute(\"data-trix-active\");\n return element.classList.remove(\"trix-active\");\n }\n });\n }\n eachAttributeButton(callback) {\n return Array.from(this.element.querySelectorAll(attributeButtonSelector)).map(element => callback(element, getAttributeName(element)));\n }\n applyKeyboardCommand(keys) {\n const keyString = JSON.stringify(keys.sort());\n for (const button of Array.from(this.element.querySelectorAll(\"[data-trix-key]\"))) {\n const buttonKeys = button.getAttribute(\"data-trix-key\").split(\"+\");\n const buttonKeyString = JSON.stringify(buttonKeys.sort());\n if (buttonKeyString === keyString) {\n triggerEvent(\"mousedown\", {\n onElement: button\n });\n return true;\n }\n }\n return false;\n }\n\n // Dialogs\n\n dialogIsVisible(dialogName) {\n const element = this.getDialog(dialogName);\n if (element) {\n return element.hasAttribute(\"data-trix-active\");\n }\n }\n toggleDialog(dialogName) {\n if (this.dialogIsVisible(dialogName)) {\n return this.hideDialog();\n } else {\n return this.showDialog(dialogName);\n }\n }\n showDialog(dialogName) {\n var _this$delegate5, _this$delegate6;\n this.hideDialog();\n (_this$delegate5 = this.delegate) === null || _this$delegate5 === void 0 || _this$delegate5.toolbarWillShowDialog();\n const element = this.getDialog(dialogName);\n element.setAttribute(\"data-trix-active\", \"\");\n element.classList.add(\"trix-active\");\n Array.from(element.querySelectorAll(\"input[disabled]\")).forEach(disabledInput => {\n disabledInput.removeAttribute(\"disabled\");\n });\n const attributeName = getAttributeName(element);\n if (attributeName) {\n const input = getInputForDialog(element, dialogName);\n if (input) {\n input.value = this.attributes[attributeName] || \"\";\n input.select();\n }\n }\n return (_this$delegate6 = this.delegate) === null || _this$delegate6 === void 0 ? void 0 : _this$delegate6.toolbarDidShowDialog(dialogName);\n }\n setAttribute(dialogElement) {\n const attributeName = getAttributeName(dialogElement);\n const input = getInputForDialog(dialogElement, attributeName);\n if (input.willValidate && !input.checkValidity()) {\n input.setAttribute(\"data-trix-validate\", \"\");\n input.classList.add(\"trix-validate\");\n return input.focus();\n } else {\n var _this$delegate7;\n (_this$delegate7 = this.delegate) === null || _this$delegate7 === void 0 || _this$delegate7.toolbarDidUpdateAttribute(attributeName, input.value);\n return this.hideDialog();\n }\n }\n removeAttribute(dialogElement) {\n var _this$delegate8;\n const attributeName = getAttributeName(dialogElement);\n (_this$delegate8 = this.delegate) === null || _this$delegate8 === void 0 || _this$delegate8.toolbarDidRemoveAttribute(attributeName);\n return this.hideDialog();\n }\n hideDialog() {\n const element = this.element.querySelector(activeDialogSelector);\n if (element) {\n var _this$delegate9;\n element.removeAttribute(\"data-trix-active\");\n element.classList.remove(\"trix-active\");\n this.resetDialogInputs();\n return (_this$delegate9 = this.delegate) === null || _this$delegate9 === void 0 ? void 0 : _this$delegate9.toolbarDidHideDialog(getDialogName(element));\n }\n }\n resetDialogInputs() {\n Array.from(this.element.querySelectorAll(dialogInputSelector)).forEach(input => {\n input.setAttribute(\"disabled\", \"disabled\");\n input.removeAttribute(\"data-trix-validate\");\n input.classList.remove(\"trix-validate\");\n });\n }\n getDialog(dialogName) {\n return this.element.querySelector(\"[data-trix-dialog=\".concat(dialogName, \"]\"));\n }\n}\n\nconst snapshotsAreEqual = (a, b) => rangesAreEqual(a.selectedRange, b.selectedRange) && a.document.isEqualTo(b.document);\nclass EditorController extends Controller {\n constructor(_ref) {\n let {\n editorElement,\n document,\n html\n } = _ref;\n super(...arguments);\n this.editorElement = editorElement;\n this.selectionManager = new SelectionManager(this.editorElement);\n this.selectionManager.delegate = this;\n this.composition = new Composition();\n this.composition.delegate = this;\n this.attachmentManager = new AttachmentManager(this.composition.getAttachments());\n this.attachmentManager.delegate = this;\n this.inputController = input.getLevel() === 2 ? new Level2InputController(this.editorElement) : new Level0InputController(this.editorElement);\n this.inputController.delegate = this;\n this.inputController.responder = this.composition;\n this.compositionController = new CompositionController(this.editorElement, this.composition);\n this.compositionController.delegate = this;\n this.toolbarController = new ToolbarController(this.editorElement.toolbarElement);\n this.toolbarController.delegate = this;\n this.editor = new Editor(this.composition, this.selectionManager, this.editorElement);\n if (document) {\n this.editor.loadDocument(document);\n } else {\n this.editor.loadHTML(html);\n }\n }\n registerSelectionManager() {\n return selectionChangeObserver.registerSelectionManager(this.selectionManager);\n }\n unregisterSelectionManager() {\n return selectionChangeObserver.unregisterSelectionManager(this.selectionManager);\n }\n render() {\n return this.compositionController.render();\n }\n reparse() {\n return this.composition.replaceHTML(this.editorElement.innerHTML);\n }\n\n // Composition delegate\n\n compositionDidChangeDocument(document) {\n this.notifyEditorElement(\"document-change\");\n if (!this.handlingInput) {\n return this.render();\n }\n }\n compositionDidChangeCurrentAttributes(currentAttributes) {\n this.currentAttributes = currentAttributes;\n this.toolbarController.updateAttributes(this.currentAttributes);\n this.updateCurrentActions();\n return this.notifyEditorElement(\"attributes-change\", {\n attributes: this.currentAttributes\n });\n }\n compositionDidPerformInsertionAtRange(range) {\n if (this.pasting) {\n this.pastedRange = range;\n }\n }\n compositionShouldAcceptFile(file) {\n return this.notifyEditorElement(\"file-accept\", {\n file\n });\n }\n compositionDidAddAttachment(attachment) {\n const managedAttachment = this.attachmentManager.manageAttachment(attachment);\n return this.notifyEditorElement(\"attachment-add\", {\n attachment: managedAttachment\n });\n }\n compositionDidEditAttachment(attachment) {\n this.compositionController.rerenderViewForObject(attachment);\n const managedAttachment = this.attachmentManager.manageAttachment(attachment);\n this.notifyEditorElement(\"attachment-edit\", {\n attachment: managedAttachment\n });\n return this.notifyEditorElement(\"change\");\n }\n compositionDidChangeAttachmentPreviewURL(attachment) {\n this.compositionController.invalidateViewForObject(attachment);\n return this.notifyEditorElement(\"change\");\n }\n compositionDidRemoveAttachment(attachment) {\n const managedAttachment = this.attachmentManager.unmanageAttachment(attachment);\n return this.notifyEditorElement(\"attachment-remove\", {\n attachment: managedAttachment\n });\n }\n compositionDidStartEditingAttachment(attachment, options) {\n this.attachmentLocationRange = this.composition.document.getLocationRangeOfAttachment(attachment);\n this.compositionController.installAttachmentEditorForAttachment(attachment, options);\n return this.selectionManager.setLocationRange(this.attachmentLocationRange);\n }\n compositionDidStopEditingAttachment(attachment) {\n this.compositionController.uninstallAttachmentEditor();\n this.attachmentLocationRange = null;\n }\n compositionDidRequestChangingSelectionToLocationRange(locationRange) {\n if (this.loadingSnapshot && !this.isFocused()) return;\n this.requestedLocationRange = locationRange;\n this.compositionRevisionWhenLocationRangeRequested = this.composition.revision;\n if (!this.handlingInput) {\n return this.render();\n }\n }\n compositionWillLoadSnapshot() {\n this.loadingSnapshot = true;\n }\n compositionDidLoadSnapshot() {\n this.compositionController.refreshViewCache();\n this.render();\n this.loadingSnapshot = false;\n }\n getSelectionManager() {\n return this.selectionManager;\n }\n\n // Attachment manager delegate\n\n attachmentManagerDidRequestRemovalOfAttachment(attachment) {\n return this.removeAttachment(attachment);\n }\n\n // Document controller delegate\n\n compositionControllerWillSyncDocumentView() {\n this.inputController.editorWillSyncDocumentView();\n this.selectionManager.lock();\n return this.selectionManager.clearSelection();\n }\n compositionControllerDidSyncDocumentView() {\n this.inputController.editorDidSyncDocumentView();\n this.selectionManager.unlock();\n this.updateCurrentActions();\n return this.notifyEditorElement(\"sync\");\n }\n compositionControllerDidRender() {\n if (this.requestedLocationRange) {\n if (this.compositionRevisionWhenLocationRangeRequested === this.composition.revision) {\n this.selectionManager.setLocationRange(this.requestedLocationRange);\n }\n this.requestedLocationRange = null;\n this.compositionRevisionWhenLocationRangeRequested = null;\n }\n if (this.renderedCompositionRevision !== this.composition.revision) {\n this.runEditorFilters();\n this.composition.updateCurrentAttributes();\n this.notifyEditorElement(\"render\");\n }\n this.renderedCompositionRevision = this.composition.revision;\n }\n compositionControllerDidFocus() {\n if (this.isFocusedInvisibly()) {\n this.setLocationRange({\n index: 0,\n offset: 0\n });\n }\n this.toolbarController.hideDialog();\n return this.notifyEditorElement(\"focus\");\n }\n compositionControllerDidBlur() {\n return this.notifyEditorElement(\"blur\");\n }\n compositionControllerDidSelectAttachment(attachment, options) {\n this.toolbarController.hideDialog();\n return this.composition.editAttachment(attachment, options);\n }\n compositionControllerDidRequestDeselectingAttachment(attachment) {\n const locationRange = this.attachmentLocationRange || this.composition.document.getLocationRangeOfAttachment(attachment);\n return this.selectionManager.setLocationRange(locationRange[1]);\n }\n compositionControllerWillUpdateAttachment(attachment) {\n return this.editor.recordUndoEntry(\"Edit Attachment\", {\n context: attachment.id,\n consolidatable: true\n });\n }\n compositionControllerDidRequestRemovalOfAttachment(attachment) {\n return this.removeAttachment(attachment);\n }\n\n // Input controller delegate\n\n inputControllerWillHandleInput() {\n this.handlingInput = true;\n this.requestedRender = false;\n }\n inputControllerDidRequestRender() {\n this.requestedRender = true;\n }\n inputControllerDidHandleInput() {\n this.handlingInput = false;\n if (this.requestedRender) {\n this.requestedRender = false;\n return this.render();\n }\n }\n inputControllerDidAllowUnhandledInput() {\n return this.notifyEditorElement(\"change\");\n }\n inputControllerDidRequestReparse() {\n return this.reparse();\n }\n inputControllerWillPerformTyping() {\n return this.recordTypingUndoEntry();\n }\n inputControllerWillPerformFormatting(attributeName) {\n return this.recordFormattingUndoEntry(attributeName);\n }\n inputControllerWillCutText() {\n return this.editor.recordUndoEntry(\"Cut\");\n }\n inputControllerWillPaste(paste) {\n this.editor.recordUndoEntry(\"Paste\");\n this.pasting = true;\n return this.notifyEditorElement(\"before-paste\", {\n paste\n });\n }\n inputControllerDidPaste(paste) {\n paste.range = this.pastedRange;\n this.pastedRange = null;\n this.pasting = null;\n return this.notifyEditorElement(\"paste\", {\n paste\n });\n }\n inputControllerWillMoveText() {\n return this.editor.recordUndoEntry(\"Move\");\n }\n inputControllerWillAttachFiles() {\n return this.editor.recordUndoEntry(\"Drop Files\");\n }\n inputControllerWillPerformUndo() {\n return this.editor.undo();\n }\n inputControllerWillPerformRedo() {\n return this.editor.redo();\n }\n inputControllerDidReceiveKeyboardCommand(keys) {\n return this.toolbarController.applyKeyboardCommand(keys);\n }\n inputControllerDidStartDrag() {\n this.locationRangeBeforeDrag = this.selectionManager.getLocationRange();\n }\n inputControllerDidReceiveDragOverPoint(point) {\n return this.selectionManager.setLocationRangeFromPointRange(point);\n }\n inputControllerDidCancelDrag() {\n this.selectionManager.setLocationRange(this.locationRangeBeforeDrag);\n this.locationRangeBeforeDrag = null;\n }\n\n // Selection manager delegate\n\n locationRangeDidChange(locationRange) {\n this.composition.updateCurrentAttributes();\n this.updateCurrentActions();\n if (this.attachmentLocationRange && !rangesAreEqual(this.attachmentLocationRange, locationRange)) {\n this.composition.stopEditingAttachment();\n }\n return this.notifyEditorElement(\"selection-change\");\n }\n\n // Toolbar controller delegate\n\n toolbarDidClickButton() {\n if (!this.getLocationRange()) {\n return this.setLocationRange({\n index: 0,\n offset: 0\n });\n }\n }\n toolbarDidInvokeAction(actionName, invokingElement) {\n return this.invokeAction(actionName, invokingElement);\n }\n toolbarDidToggleAttribute(attributeName) {\n this.recordFormattingUndoEntry(attributeName);\n this.composition.toggleCurrentAttribute(attributeName);\n this.render();\n if (!this.selectionFrozen) {\n return this.editorElement.focus();\n }\n }\n toolbarDidUpdateAttribute(attributeName, value) {\n this.recordFormattingUndoEntry(attributeName);\n this.composition.setCurrentAttribute(attributeName, value);\n this.render();\n if (!this.selectionFrozen) {\n return this.editorElement.focus();\n }\n }\n toolbarDidRemoveAttribute(attributeName) {\n this.recordFormattingUndoEntry(attributeName);\n this.composition.removeCurrentAttribute(attributeName);\n this.render();\n if (!this.selectionFrozen) {\n return this.editorElement.focus();\n }\n }\n toolbarWillShowDialog(dialogElement) {\n this.composition.expandSelectionForEditing();\n return this.freezeSelection();\n }\n toolbarDidShowDialog(dialogName) {\n return this.notifyEditorElement(\"toolbar-dialog-show\", {\n dialogName\n });\n }\n toolbarDidHideDialog(dialogName) {\n this.thawSelection();\n this.editorElement.focus();\n return this.notifyEditorElement(\"toolbar-dialog-hide\", {\n dialogName\n });\n }\n\n // Selection\n\n freezeSelection() {\n if (!this.selectionFrozen) {\n this.selectionManager.lock();\n this.composition.freezeSelection();\n this.selectionFrozen = true;\n return this.render();\n }\n }\n thawSelection() {\n if (this.selectionFrozen) {\n this.composition.thawSelection();\n this.selectionManager.unlock();\n this.selectionFrozen = false;\n return this.render();\n }\n }\n canInvokeAction(actionName) {\n if (this.actionIsExternal(actionName)) {\n return true;\n } else {\n var _this$actions$actionN;\n return !!((_this$actions$actionN = this.actions[actionName]) !== null && _this$actions$actionN !== void 0 && (_this$actions$actionN = _this$actions$actionN.test) !== null && _this$actions$actionN !== void 0 && _this$actions$actionN.call(this));\n }\n }\n invokeAction(actionName, invokingElement) {\n if (this.actionIsExternal(actionName)) {\n return this.notifyEditorElement(\"action-invoke\", {\n actionName,\n invokingElement\n });\n } else {\n var _this$actions$actionN2;\n return (_this$actions$actionN2 = this.actions[actionName]) === null || _this$actions$actionN2 === void 0 || (_this$actions$actionN2 = _this$actions$actionN2.perform) === null || _this$actions$actionN2 === void 0 ? void 0 : _this$actions$actionN2.call(this);\n }\n }\n actionIsExternal(actionName) {\n return /^x-./.test(actionName);\n }\n getCurrentActions() {\n const result = {};\n for (const actionName in this.actions) {\n result[actionName] = this.canInvokeAction(actionName);\n }\n return result;\n }\n updateCurrentActions() {\n const currentActions = this.getCurrentActions();\n if (!objectsAreEqual(currentActions, this.currentActions)) {\n this.currentActions = currentActions;\n this.toolbarController.updateActions(this.currentActions);\n return this.notifyEditorElement(\"actions-change\", {\n actions: this.currentActions\n });\n }\n }\n\n // Editor filters\n\n runEditorFilters() {\n let snapshot = this.composition.getSnapshot();\n Array.from(this.editor.filters).forEach(filter => {\n const {\n document,\n selectedRange\n } = snapshot;\n snapshot = filter.call(this.editor, snapshot) || {};\n if (!snapshot.document) {\n snapshot.document = document;\n }\n if (!snapshot.selectedRange) {\n snapshot.selectedRange = selectedRange;\n }\n });\n if (!snapshotsAreEqual(snapshot, this.composition.getSnapshot())) {\n return this.composition.loadSnapshot(snapshot);\n }\n }\n\n // Private\n\n updateInputElement() {\n const element = this.compositionController.getSerializableElement();\n const value = serializeToContentType(element, \"text/html\");\n return this.editorElement.setInputElementValue(value);\n }\n notifyEditorElement(message, data) {\n switch (message) {\n case \"document-change\":\n this.documentChangedSinceLastRender = true;\n break;\n case \"render\":\n if (this.documentChangedSinceLastRender) {\n this.documentChangedSinceLastRender = false;\n this.notifyEditorElement(\"change\");\n }\n break;\n case \"change\":\n case \"attachment-add\":\n case \"attachment-edit\":\n case \"attachment-remove\":\n this.updateInputElement();\n break;\n }\n return this.editorElement.notify(message, data);\n }\n removeAttachment(attachment) {\n this.editor.recordUndoEntry(\"Delete Attachment\");\n this.composition.removeAttachment(attachment);\n return this.render();\n }\n recordFormattingUndoEntry(attributeName) {\n const blockConfig = getBlockConfig(attributeName);\n const locationRange = this.selectionManager.getLocationRange();\n if (blockConfig || !rangeIsCollapsed(locationRange)) {\n return this.editor.recordUndoEntry(\"Formatting\", {\n context: this.getUndoContext(),\n consolidatable: true\n });\n }\n }\n recordTypingUndoEntry() {\n return this.editor.recordUndoEntry(\"Typing\", {\n context: this.getUndoContext(this.currentAttributes),\n consolidatable: true\n });\n }\n getUndoContext() {\n for (var _len = arguments.length, context = new Array(_len), _key = 0; _key < _len; _key++) {\n context[_key] = arguments[_key];\n }\n return [this.getLocationContext(), this.getTimeContext(), ...Array.from(context)];\n }\n getLocationContext() {\n const locationRange = this.selectionManager.getLocationRange();\n if (rangeIsCollapsed(locationRange)) {\n return locationRange[0].index;\n } else {\n return locationRange;\n }\n }\n getTimeContext() {\n if (undo.interval > 0) {\n return Math.floor(new Date().getTime() / undo.interval);\n } else {\n return 0;\n }\n }\n isFocused() {\n var _this$editorElement$o;\n return this.editorElement === ((_this$editorElement$o = this.editorElement.ownerDocument) === null || _this$editorElement$o === void 0 ? void 0 : _this$editorElement$o.activeElement);\n }\n\n // Detect \"Cursor disappears sporadically\" Firefox bug.\n // - https://bugzilla.mozilla.org/show_bug.cgi?id=226301\n isFocusedInvisibly() {\n return this.isFocused() && !this.getLocationRange();\n }\n get actions() {\n return this.constructor.actions;\n }\n}\n_defineProperty(EditorController, \"actions\", {\n undo: {\n test() {\n return this.editor.canUndo();\n },\n perform() {\n return this.editor.undo();\n }\n },\n redo: {\n test() {\n return this.editor.canRedo();\n },\n perform() {\n return this.editor.redo();\n }\n },\n link: {\n test() {\n return this.editor.canActivateAttribute(\"href\");\n }\n },\n increaseNestingLevel: {\n test() {\n return this.editor.canIncreaseNestingLevel();\n },\n perform() {\n return this.editor.increaseNestingLevel() && this.render();\n }\n },\n decreaseNestingLevel: {\n test() {\n return this.editor.canDecreaseNestingLevel();\n },\n perform() {\n return this.editor.decreaseNestingLevel() && this.render();\n }\n },\n attachFiles: {\n test() {\n return true;\n },\n perform() {\n return input.pickFiles(this.editor.insertFiles);\n }\n }\n});\nEditorController.proxyMethod(\"getSelectionManager().setLocationRange\");\nEditorController.proxyMethod(\"getSelectionManager().getLocationRange\");\n\nvar controllers = /*#__PURE__*/Object.freeze({\n __proto__: null,\n AttachmentEditorController: AttachmentEditorController,\n CompositionController: CompositionController,\n Controller: Controller,\n EditorController: EditorController,\n InputController: InputController,\n Level0InputController: Level0InputController,\n Level2InputController: Level2InputController,\n ToolbarController: ToolbarController\n});\n\nvar observers = /*#__PURE__*/Object.freeze({\n __proto__: null,\n MutationObserver: MutationObserver,\n SelectionChangeObserver: SelectionChangeObserver\n});\n\nvar operations = /*#__PURE__*/Object.freeze({\n __proto__: null,\n FileVerificationOperation: FileVerificationOperation,\n ImagePreloadOperation: ImagePreloadOperation\n});\n\ninstallDefaultCSSForTagName(\"trix-toolbar\", \"%t {\\n display: block;\\n}\\n\\n%t {\\n white-space: nowrap;\\n}\\n\\n%t [data-trix-dialog] {\\n display: none;\\n}\\n\\n%t [data-trix-dialog][data-trix-active] {\\n display: block;\\n}\\n\\n%t [data-trix-dialog] [data-trix-validate]:invalid {\\n background-color: #ffdddd;\\n}\");\nclass TrixToolbarElement extends HTMLElement {\n // Element lifecycle\n\n connectedCallback() {\n if (this.innerHTML === \"\") {\n this.innerHTML = toolbar.getDefaultHTML();\n }\n }\n}\n\nlet id = 0;\n\n// Contenteditable support helpers\n\nconst autofocus = function (element) {\n if (!document.querySelector(\":focus\")) {\n if (element.hasAttribute(\"autofocus\") && document.querySelector(\"[autofocus]\") === element) {\n return element.focus();\n }\n }\n};\nconst makeEditable = function (element) {\n if (element.hasAttribute(\"contenteditable\")) {\n return;\n }\n element.setAttribute(\"contenteditable\", \"\");\n return handleEventOnce(\"focus\", {\n onElement: element,\n withCallback() {\n return configureContentEditable(element);\n }\n });\n};\nconst configureContentEditable = function (element) {\n disableObjectResizing(element);\n return setDefaultParagraphSeparator(element);\n};\nconst disableObjectResizing = function (element) {\n var _document$queryComman, _document;\n if ((_document$queryComman = (_document = document).queryCommandSupported) !== null && _document$queryComman !== void 0 && _document$queryComman.call(_document, \"enableObjectResizing\")) {\n document.execCommand(\"enableObjectResizing\", false, false);\n return handleEvent(\"mscontrolselect\", {\n onElement: element,\n preventDefault: true\n });\n }\n};\nconst setDefaultParagraphSeparator = function (element) {\n var _document$queryComman2, _document2;\n if ((_document$queryComman2 = (_document2 = document).queryCommandSupported) !== null && _document$queryComman2 !== void 0 && _document$queryComman2.call(_document2, \"DefaultParagraphSeparator\")) {\n const {\n tagName\n } = attributes.default;\n if ([\"div\", \"p\"].includes(tagName)) {\n return document.execCommand(\"DefaultParagraphSeparator\", false, tagName);\n }\n }\n};\n\n// Accessibility helpers\n\nconst addAccessibilityRole = function (element) {\n if (element.hasAttribute(\"role\")) {\n return;\n }\n return element.setAttribute(\"role\", \"textbox\");\n};\nconst ensureAriaLabel = function (element) {\n if (element.hasAttribute(\"aria-label\") || element.hasAttribute(\"aria-labelledby\")) {\n return;\n }\n const update = function () {\n const texts = Array.from(element.labels).map(label => {\n if (!label.contains(element)) return label.textContent;\n }).filter(text => text);\n const text = texts.join(\" \");\n if (text) {\n return element.setAttribute(\"aria-label\", text);\n } else {\n return element.removeAttribute(\"aria-label\");\n }\n };\n update();\n return handleEvent(\"focus\", {\n onElement: element,\n withCallback: update\n });\n};\n\n// Style\n\nconst cursorTargetStyles = function () {\n if (browser$1.forcesObjectResizing) {\n return {\n display: \"inline\",\n width: \"auto\"\n };\n } else {\n return {\n display: \"inline-block\",\n width: \"1px\"\n };\n }\n}();\ninstallDefaultCSSForTagName(\"trix-editor\", \"%t {\\n display: block;\\n}\\n\\n%t:empty::before {\\n content: attr(placeholder);\\n color: graytext;\\n cursor: text;\\n pointer-events: none;\\n white-space: pre-line;\\n}\\n\\n%t a[contenteditable=false] {\\n cursor: text;\\n}\\n\\n%t img {\\n max-width: 100%;\\n height: auto;\\n}\\n\\n%t \".concat(attachmentSelector, \" figcaption textarea {\\n resize: none;\\n}\\n\\n%t \").concat(attachmentSelector, \" figcaption textarea.trix-autoresize-clone {\\n position: absolute;\\n left: -9999px;\\n max-height: 0px;\\n}\\n\\n%t \").concat(attachmentSelector, \" figcaption[data-trix-placeholder]:empty::before {\\n content: attr(data-trix-placeholder);\\n color: graytext;\\n}\\n\\n%t [data-trix-cursor-target] {\\n display: \").concat(cursorTargetStyles.display, \" !important;\\n width: \").concat(cursorTargetStyles.width, \" !important;\\n padding: 0 !important;\\n margin: 0 !important;\\n border: none !important;\\n}\\n\\n%t [data-trix-cursor-target=left] {\\n vertical-align: top !important;\\n margin-left: -1px !important;\\n}\\n\\n%t [data-trix-cursor-target=right] {\\n vertical-align: bottom !important;\\n margin-right: -1px !important;\\n}\"));\nclass TrixEditorElement extends HTMLElement {\n // Properties\n\n get trixId() {\n if (this.hasAttribute(\"trix-id\")) {\n return this.getAttribute(\"trix-id\");\n } else {\n this.setAttribute(\"trix-id\", ++id);\n return this.trixId;\n }\n }\n get labels() {\n const labels = [];\n if (this.id && this.ownerDocument) {\n labels.push(...Array.from(this.ownerDocument.querySelectorAll(\"label[for='\".concat(this.id, \"']\")) || []));\n }\n const label = findClosestElementFromNode(this, {\n matchingSelector: \"label\"\n });\n if (label) {\n if ([this, null].includes(label.control)) {\n labels.push(label);\n }\n }\n return labels;\n }\n get toolbarElement() {\n if (this.hasAttribute(\"toolbar\")) {\n var _this$ownerDocument;\n return (_this$ownerDocument = this.ownerDocument) === null || _this$ownerDocument === void 0 ? void 0 : _this$ownerDocument.getElementById(this.getAttribute(\"toolbar\"));\n } else if (this.parentNode) {\n const toolbarId = \"trix-toolbar-\".concat(this.trixId);\n this.setAttribute(\"toolbar\", toolbarId);\n const element = makeElement(\"trix-toolbar\", {\n id: toolbarId\n });\n this.parentNode.insertBefore(element, this);\n return element;\n } else {\n return undefined;\n }\n }\n get form() {\n var _this$inputElement;\n return (_this$inputElement = this.inputElement) === null || _this$inputElement === void 0 ? void 0 : _this$inputElement.form;\n }\n get inputElement() {\n if (this.hasAttribute(\"input\")) {\n var _this$ownerDocument2;\n return (_this$ownerDocument2 = this.ownerDocument) === null || _this$ownerDocument2 === void 0 ? void 0 : _this$ownerDocument2.getElementById(this.getAttribute(\"input\"));\n } else if (this.parentNode) {\n const inputId = \"trix-input-\".concat(this.trixId);\n this.setAttribute(\"input\", inputId);\n const element = makeElement(\"input\", {\n type: \"hidden\",\n id: inputId\n });\n this.parentNode.insertBefore(element, this.nextElementSibling);\n return element;\n } else {\n return undefined;\n }\n }\n get editor() {\n var _this$editorControlle;\n return (_this$editorControlle = this.editorController) === null || _this$editorControlle === void 0 ? void 0 : _this$editorControlle.editor;\n }\n get name() {\n var _this$inputElement2;\n return (_this$inputElement2 = this.inputElement) === null || _this$inputElement2 === void 0 ? void 0 : _this$inputElement2.name;\n }\n get value() {\n var _this$inputElement3;\n return (_this$inputElement3 = this.inputElement) === null || _this$inputElement3 === void 0 ? void 0 : _this$inputElement3.value;\n }\n set value(defaultValue) {\n var _this$editor;\n this.defaultValue = defaultValue;\n (_this$editor = this.editor) === null || _this$editor === void 0 || _this$editor.loadHTML(this.defaultValue);\n }\n\n // Controller delegate methods\n\n notify(message, data) {\n if (this.editorController) {\n return triggerEvent(\"trix-\".concat(message), {\n onElement: this,\n attributes: data\n });\n }\n }\n setInputElementValue(value) {\n if (this.inputElement) {\n this.inputElement.value = value;\n }\n }\n\n // Element lifecycle\n\n connectedCallback() {\n if (!this.hasAttribute(\"data-trix-internal\")) {\n makeEditable(this);\n addAccessibilityRole(this);\n ensureAriaLabel(this);\n if (!this.editorController) {\n triggerEvent(\"trix-before-initialize\", {\n onElement: this\n });\n this.editorController = new EditorController({\n editorElement: this,\n html: this.defaultValue = this.value\n });\n requestAnimationFrame(() => triggerEvent(\"trix-initialize\", {\n onElement: this\n }));\n }\n this.editorController.registerSelectionManager();\n this.registerResetListener();\n this.registerClickListener();\n autofocus(this);\n }\n }\n disconnectedCallback() {\n var _this$editorControlle2;\n (_this$editorControlle2 = this.editorController) === null || _this$editorControlle2 === void 0 || _this$editorControlle2.unregisterSelectionManager();\n this.unregisterResetListener();\n return this.unregisterClickListener();\n }\n\n // Form support\n\n registerResetListener() {\n this.resetListener = this.resetBubbled.bind(this);\n return window.addEventListener(\"reset\", this.resetListener, false);\n }\n unregisterResetListener() {\n return window.removeEventListener(\"reset\", this.resetListener, false);\n }\n registerClickListener() {\n this.clickListener = this.clickBubbled.bind(this);\n return window.addEventListener(\"click\", this.clickListener, false);\n }\n unregisterClickListener() {\n return window.removeEventListener(\"click\", this.clickListener, false);\n }\n resetBubbled(event) {\n if (event.defaultPrevented) return;\n if (event.target !== this.form) return;\n return this.reset();\n }\n clickBubbled(event) {\n if (event.defaultPrevented) return;\n if (this.contains(event.target)) return;\n const label = findClosestElementFromNode(event.target, {\n matchingSelector: \"label\"\n });\n if (!label) return;\n if (!Array.from(this.labels).includes(label)) return;\n return this.focus();\n }\n reset() {\n this.value = this.defaultValue;\n }\n}\n\nvar elements = /*#__PURE__*/Object.freeze({\n __proto__: null,\n TrixEditorElement: TrixEditorElement,\n TrixToolbarElement: TrixToolbarElement\n});\n\nvar filters = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Filter: Filter,\n attachmentGalleryFilter: attachmentGalleryFilter\n});\n\nconst Trix = {\n VERSION: version,\n config,\n core,\n models,\n views,\n controllers,\n observers,\n operations,\n elements,\n filters\n};\n\n// Expose models under the Trix constant for compatibility with v1\nObject.assign(Trix, models);\nfunction start() {\n if (!customElements.get(\"trix-toolbar\")) {\n customElements.define(\"trix-toolbar\", TrixToolbarElement);\n }\n if (!customElements.get(\"trix-editor\")) {\n customElements.define(\"trix-editor\", TrixEditorElement);\n }\n}\nwindow.Trix = Trix;\nsetTimeout(start, 0);\n\nexport { Trix as default };\n", "var sparkMd5 = {\n exports: {}\n};\n\n(function(module, exports) {\n (function(factory) {\n {\n module.exports = factory();\n }\n })((function(undefined$1) {\n var hex_chr = [ \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\" ];\n function md5cycle(x, k) {\n var a = x[0], b = x[1], c = x[2], d = x[3];\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n function md5blk(s) {\n var md5blks = [], i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n }\n function md5blk_array(a) {\n var md5blks = [], i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n return md5blks;\n }\n function md51(s) {\n var n = s.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n length = s.length;\n tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function md51_array(a) {\n var n = a.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n length = a.length;\n tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function rhex(n) {\n var s = \"\", j;\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n }\n return s;\n }\n function hex(x) {\n var i;\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n return x.join(\"\");\n }\n if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n (function() {\n function clamp(val, length) {\n val = val | 0 || 0;\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n return Math.min(val, length);\n }\n ArrayBuffer.prototype.slice = function(from, to) {\n var length = this.byteLength, begin = clamp(from, length), end = length, num, target, targetArray, sourceArray;\n if (to !== undefined$1) {\n end = clamp(to, length);\n }\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n return target;\n };\n })();\n }\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n return str;\n }\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length, buff = new ArrayBuffer(length), arr = new Uint8Array(buff), i;\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n return returnUInt8Array ? arr : buff;\n }\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n return returnUInt8Array ? result : result.buffer;\n }\n function hexToBinaryString(hex) {\n var bytes = [], length = hex.length, x;\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n return String.fromCharCode.apply(String, bytes);\n }\n function SparkMD5() {\n this.reset();\n }\n SparkMD5.prototype.append = function(str) {\n this.appendBinary(toUtf8(str));\n return this;\n };\n SparkMD5.prototype.appendBinary = function(contents) {\n this._buff += contents;\n this._length += contents.length;\n var length = this._buff.length, i;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n this._buff = this._buff.substring(i - 64);\n return this;\n };\n SparkMD5.prototype.end = function(raw) {\n var buff = this._buff, length = buff.length, i, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.prototype.reset = function() {\n this._buff = \"\";\n this._length = 0;\n this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n return this;\n };\n SparkMD5.prototype.getState = function() {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash.slice()\n };\n };\n SparkMD5.prototype.setState = function(state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n return this;\n };\n SparkMD5.prototype.destroy = function() {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n SparkMD5.prototype._finish = function(tail, length) {\n var i = length, tmp, lo, hi;\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(this._hash, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n SparkMD5.hash = function(str, raw) {\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n SparkMD5.hashBinary = function(content, raw) {\n var hash = md51(content), ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n SparkMD5.ArrayBuffer = function() {\n this.reset();\n };\n SparkMD5.ArrayBuffer.prototype.append = function(arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true), length = buff.length, i;\n this._length += arr.byteLength;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.end = function(raw) {\n var buff = this._buff, length = buff.length, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], i, ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.ArrayBuffer.prototype.reset = function() {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.getState = function() {\n var state = SparkMD5.prototype.getState.call(this);\n state.buff = arrayBuffer2Utf8Str(state.buff);\n return state;\n };\n SparkMD5.ArrayBuffer.prototype.setState = function(state) {\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n return SparkMD5.prototype.setState.call(this, state);\n };\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n SparkMD5.ArrayBuffer.hash = function(arr, raw) {\n var hash = md51_array(new Uint8Array(arr)), ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n return SparkMD5;\n }));\n})(sparkMd5);\n\nvar SparkMD5 = sparkMd5.exports;\n\nconst fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n\nclass FileChecksum {\n static create(file, callback) {\n const instance = new FileChecksum(file);\n instance.create(callback);\n }\n constructor(file) {\n this.file = file;\n this.chunkSize = 2097152;\n this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n this.chunkIndex = 0;\n }\n create(callback) {\n this.callback = callback;\n this.md5Buffer = new SparkMD5.ArrayBuffer;\n this.fileReader = new FileReader;\n this.fileReader.addEventListener(\"load\", (event => this.fileReaderDidLoad(event)));\n this.fileReader.addEventListener(\"error\", (event => this.fileReaderDidError(event)));\n this.readNextChunk();\n }\n fileReaderDidLoad(event) {\n this.md5Buffer.append(event.target.result);\n if (!this.readNextChunk()) {\n const binaryDigest = this.md5Buffer.end(true);\n const base64digest = btoa(binaryDigest);\n this.callback(null, base64digest);\n }\n }\n fileReaderDidError(event) {\n this.callback(`Error reading ${this.file.name}`);\n }\n readNextChunk() {\n if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n const start = this.chunkIndex * this.chunkSize;\n const end = Math.min(start + this.chunkSize, this.file.size);\n const bytes = fileSlice.call(this.file, start, end);\n this.fileReader.readAsArrayBuffer(bytes);\n this.chunkIndex++;\n return true;\n } else {\n return false;\n }\n }\n}\n\nfunction getMetaValue(name) {\n const element = findElement(document.head, `meta[name=\"${name}\"]`);\n if (element) {\n return element.getAttribute(\"content\");\n }\n}\n\nfunction findElements(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n const elements = root.querySelectorAll(selector);\n return toArray(elements);\n}\n\nfunction findElement(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n return root.querySelector(selector);\n}\n\nfunction dispatchEvent(element, type, eventInit = {}) {\n const {disabled: disabled} = element;\n const {bubbles: bubbles, cancelable: cancelable, detail: detail} = eventInit;\n const event = document.createEvent(\"Event\");\n event.initEvent(type, bubbles || true, cancelable || true);\n event.detail = detail || {};\n try {\n element.disabled = false;\n element.dispatchEvent(event);\n } finally {\n element.disabled = disabled;\n }\n return event;\n}\n\nfunction toArray(value) {\n if (Array.isArray(value)) {\n return value;\n } else if (Array.from) {\n return Array.from(value);\n } else {\n return [].slice.call(value);\n }\n}\n\nclass BlobRecord {\n constructor(file, checksum, url, customHeaders = {}) {\n this.file = file;\n this.attributes = {\n filename: file.name,\n content_type: file.type || \"application/octet-stream\",\n byte_size: file.size,\n checksum: checksum\n };\n this.xhr = new XMLHttpRequest;\n this.xhr.open(\"POST\", url, true);\n this.xhr.responseType = \"json\";\n this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n Object.keys(customHeaders).forEach((headerKey => {\n this.xhr.setRequestHeader(headerKey, customHeaders[headerKey]);\n }));\n const csrfToken = getMetaValue(\"csrf-token\");\n if (csrfToken != undefined) {\n this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n }\n this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n }\n get status() {\n return this.xhr.status;\n }\n get response() {\n const {responseType: responseType, response: response} = this.xhr;\n if (responseType == \"json\") {\n return response;\n } else {\n return JSON.parse(response);\n }\n }\n create(callback) {\n this.callback = callback;\n this.xhr.send(JSON.stringify({\n blob: this.attributes\n }));\n }\n requestDidLoad(event) {\n if (this.status >= 200 && this.status < 300) {\n const {response: response} = this;\n const {direct_upload: direct_upload} = response;\n delete response.direct_upload;\n this.attributes = response;\n this.directUploadData = direct_upload;\n this.callback(null, this.toJSON());\n } else {\n this.requestDidError(event);\n }\n }\n requestDidError(event) {\n this.callback(`Error creating Blob for \"${this.file.name}\". Status: ${this.status}`);\n }\n toJSON() {\n const result = {};\n for (const key in this.attributes) {\n result[key] = this.attributes[key];\n }\n return result;\n }\n}\n\nclass BlobUpload {\n constructor(blob) {\n this.blob = blob;\n this.file = blob.file;\n const {url: url, headers: headers} = blob.directUploadData;\n this.xhr = new XMLHttpRequest;\n this.xhr.open(\"PUT\", url, true);\n this.xhr.responseType = \"text\";\n for (const key in headers) {\n this.xhr.setRequestHeader(key, headers[key]);\n }\n this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n }\n create(callback) {\n this.callback = callback;\n this.xhr.send(this.file.slice());\n }\n requestDidLoad(event) {\n const {status: status, response: response} = this.xhr;\n if (status >= 200 && status < 300) {\n this.callback(null, response);\n } else {\n this.requestDidError(event);\n }\n }\n requestDidError(event) {\n this.callback(`Error storing \"${this.file.name}\". Status: ${this.xhr.status}`);\n }\n}\n\nlet id = 0;\n\nclass DirectUpload {\n constructor(file, url, delegate, customHeaders = {}) {\n this.id = ++id;\n this.file = file;\n this.url = url;\n this.delegate = delegate;\n this.customHeaders = customHeaders;\n }\n create(callback) {\n FileChecksum.create(this.file, ((error, checksum) => {\n if (error) {\n callback(error);\n return;\n }\n const blob = new BlobRecord(this.file, checksum, this.url, this.customHeaders);\n notify(this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n blob.create((error => {\n if (error) {\n callback(error);\n } else {\n const upload = new BlobUpload(blob);\n notify(this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n upload.create((error => {\n if (error) {\n callback(error);\n } else {\n callback(null, blob.toJSON());\n }\n }));\n }\n }));\n }));\n }\n}\n\nfunction notify(object, methodName, ...messages) {\n if (object && typeof object[methodName] == \"function\") {\n return object[methodName](...messages);\n }\n}\n\nclass DirectUploadController {\n constructor(input, file) {\n this.input = input;\n this.file = file;\n this.directUpload = new DirectUpload(this.file, this.url, this);\n this.dispatch(\"initialize\");\n }\n start(callback) {\n const hiddenInput = document.createElement(\"input\");\n hiddenInput.type = \"hidden\";\n hiddenInput.name = this.input.name;\n this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n this.dispatch(\"start\");\n this.directUpload.create(((error, attributes) => {\n if (error) {\n hiddenInput.parentNode.removeChild(hiddenInput);\n this.dispatchError(error);\n } else {\n hiddenInput.value = attributes.signed_id;\n }\n this.dispatch(\"end\");\n callback(error);\n }));\n }\n uploadRequestDidProgress(event) {\n const progress = event.loaded / event.total * 100;\n if (progress) {\n this.dispatch(\"progress\", {\n progress: progress\n });\n }\n }\n get url() {\n return this.input.getAttribute(\"data-direct-upload-url\");\n }\n dispatch(name, detail = {}) {\n detail.file = this.file;\n detail.id = this.directUpload.id;\n return dispatchEvent(this.input, `direct-upload:${name}`, {\n detail: detail\n });\n }\n dispatchError(error) {\n const event = this.dispatch(\"error\", {\n error: error\n });\n if (!event.defaultPrevented) {\n alert(error);\n }\n }\n directUploadWillCreateBlobWithXHR(xhr) {\n this.dispatch(\"before-blob-request\", {\n xhr: xhr\n });\n }\n directUploadWillStoreFileWithXHR(xhr) {\n this.dispatch(\"before-storage-request\", {\n xhr: xhr\n });\n xhr.upload.addEventListener(\"progress\", (event => this.uploadRequestDidProgress(event)));\n }\n}\n\nconst inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n\nclass DirectUploadsController {\n constructor(form) {\n this.form = form;\n this.inputs = findElements(form, inputSelector).filter((input => input.files.length));\n }\n start(callback) {\n const controllers = this.createDirectUploadControllers();\n const startNextController = () => {\n const controller = controllers.shift();\n if (controller) {\n controller.start((error => {\n if (error) {\n callback(error);\n this.dispatch(\"end\");\n } else {\n startNextController();\n }\n }));\n } else {\n callback();\n this.dispatch(\"end\");\n }\n };\n this.dispatch(\"start\");\n startNextController();\n }\n createDirectUploadControllers() {\n const controllers = [];\n this.inputs.forEach((input => {\n toArray(input.files).forEach((file => {\n const controller = new DirectUploadController(input, file);\n controllers.push(controller);\n }));\n }));\n return controllers;\n }\n dispatch(name, detail = {}) {\n return dispatchEvent(this.form, `direct-uploads:${name}`, {\n detail: detail\n });\n }\n}\n\nconst processingAttribute = \"data-direct-uploads-processing\";\n\nconst submitButtonsByForm = new WeakMap;\n\nlet started = false;\n\nfunction start() {\n if (!started) {\n started = true;\n document.addEventListener(\"click\", didClick, true);\n document.addEventListener(\"submit\", didSubmitForm, true);\n document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n }\n}\n\nfunction didClick(event) {\n const button = event.target.closest(\"button, input\");\n if (button && button.type === \"submit\" && button.form) {\n submitButtonsByForm.set(button.form, button);\n }\n}\n\nfunction didSubmitForm(event) {\n handleFormSubmissionEvent(event);\n}\n\nfunction didSubmitRemoteElement(event) {\n if (event.target.tagName == \"FORM\") {\n handleFormSubmissionEvent(event);\n }\n}\n\nfunction handleFormSubmissionEvent(event) {\n const form = event.target;\n if (form.hasAttribute(processingAttribute)) {\n event.preventDefault();\n return;\n }\n const controller = new DirectUploadsController(form);\n const {inputs: inputs} = controller;\n if (inputs.length) {\n event.preventDefault();\n form.setAttribute(processingAttribute, \"\");\n inputs.forEach(disable);\n controller.start((error => {\n form.removeAttribute(processingAttribute);\n if (error) {\n inputs.forEach(enable);\n } else {\n submitForm(form);\n }\n }));\n }\n}\n\nfunction submitForm(form) {\n let button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n if (button) {\n const {disabled: disabled} = button;\n button.disabled = false;\n button.focus();\n button.click();\n button.disabled = disabled;\n } else {\n button = document.createElement(\"input\");\n button.type = \"submit\";\n button.style.display = \"none\";\n form.appendChild(button);\n button.click();\n form.removeChild(button);\n }\n submitButtonsByForm.delete(form);\n}\n\nfunction disable(input) {\n input.disabled = true;\n}\n\nfunction enable(input) {\n input.disabled = false;\n}\n\nfunction autostart() {\n if (window.ActiveStorage) {\n start();\n }\n}\n\nsetTimeout(autostart, 1);\n\nexport { DirectUpload, DirectUploadController, DirectUploadsController, start };\n", "import * as ActiveStorage from '@rails/activestorage'\n\n// ActiveStorage hooks into \"submit\" events and uploads files of form fields\n// with [data-direct-upload-url] before the form is \"actually\" submitted.\n//\n// For that to work, ActiveStorage uses a capture listener which prevents the\n// `submit` event, uploads any files from a form's file fiels to storage,\n// and then re-submits the form.\n// This is why it integrates with e.g. Unpoly forms without any configuration.\n//\n// However, it also means we lose the ability to add files to FileLists of such\n// fields before form submission, as they provide no events to hook into.\n// An example for when this is necessary is audio recording: We must first\n// stop recording and then attach the audio blob to the FileList of an input.\n// If ActiveStorage is called before us, the audio recording is not yet attached\n// and thus not uploaded by ActiveStorage.\n//\n// Here is our solution to work around that:\n// We add a capture listener before ActiveStorage and emit an event that other\n// code can listen to. If that `preventDefault` is called on our event, we also\n// call `stopImmediatePropagation` on the submit event's capture chain, and\n// ActiveStorage's listener will not be called.\n\nfunction captureSubmit(submitEvent) {\n const captureEvent = new CustomEvent('app:submit:before', {\n bubbles: true,\n cancelable: true,\n })\n\n submitEvent.target.dispatchEvent(captureEvent)\n\n if (captureEvent.defaultPrevented) {\n submitEvent.stopImmediatePropagation()\n submitEvent.preventDefault()\n }\n}\n\ndocument.addEventListener('submit', captureSubmit, { capture: true })\nActiveStorage.start()\n", "function t(t,e,i,s){return new(i||(i=Promise))((function(n,r){function o(t){try{h(s.next(t))}catch(t){r(t)}}function a(t){try{h(s.throw(t))}catch(t){r(t)}}function h(t){var e;t.done?n(t.value):(e=t.value,e instanceof i?e:new i((function(t){t(e)}))).then(o,a)}h((s=s.apply(t,e||[])).next())}))}\"function\"==typeof SuppressedError&&SuppressedError;class e{constructor(){this.listeners={}}on(t,e,i){if(this.listeners[t]||(this.listeners[t]=new Set),this.listeners[t].add(e),null==i?void 0:i.once){const i=()=>{this.un(t,i),this.un(t,e)};return this.on(t,i),i}return()=>this.un(t,e)}un(t,e){var i;null===(i=this.listeners[t])||void 0===i||i.delete(e)}once(t,e){return this.on(t,e,{once:!0})}unAll(){this.listeners={}}emit(t,...e){this.listeners[t]&&this.listeners[t].forEach((t=>t(...e)))}}const i={decode:function(e,i){return t(this,void 0,void 0,(function*(){const t=new AudioContext({sampleRate:i});return t.decodeAudioData(e).finally((()=>t.close()))}))},createBuffer:function(t,e){return\"number\"==typeof t[0]&&(t=[t]),function(t){const e=t[0];if(e.some((t=>t>1||t<-1))){const i=e.length;let s=0;for(let t=0;ts&&(s=i)}for(const e of t)for(let t=0;tnull==t?void 0:t[e],copyFromChannel:AudioBuffer.prototype.copyFromChannel,copyToChannel:AudioBuffer.prototype.copyToChannel}}};function s(t,e){const i=e.xmlns?document.createElementNS(e.xmlns,t):document.createElement(t);for(const[t,n]of Object.entries(e))if(\"children\"===t)for(const[t,n]of Object.entries(e))\"string\"==typeof n?i.appendChild(document.createTextNode(n)):i.appendChild(s(t,n));else\"style\"===t?Object.assign(i.style,n):\"textContent\"===t?i.textContent=n:i.setAttribute(t,n.toString());return i}function n(t,e,i){const n=s(t,e||{});return null==i||i.appendChild(n),n}var r=Object.freeze({__proto__:null,createElement:n,default:n});const o={fetchBlob:function(e,i,s){return t(this,void 0,void 0,(function*(){const n=yield fetch(e,s);if(n.status>=400)throw new Error(`Failed to fetch ${e}: ${n.status} (${n.statusText})`);return function(e,i){t(this,void 0,void 0,(function*(){if(!e.body||!e.headers)return;const s=e.body.getReader(),n=Number(e.headers.get(\"Content-Length\"))||0;let r=0;const o=e=>t(this,void 0,void 0,(function*(){r+=(null==e?void 0:e.length)||0;const t=Math.round(r/n*100);i(t)})),a=()=>t(this,void 0,void 0,(function*(){let t;try{t=yield s.read()}catch(t){return}t.done||(o(t.value),yield a())}));a()}))}(n.clone(),i),n.blob()}))}};class a extends e{constructor(t){super(),this.isExternalMedia=!1,t.media?(this.media=t.media,this.isExternalMedia=!0):this.media=document.createElement(\"audio\"),t.mediaControls&&(this.media.controls=!0),t.autoplay&&(this.media.autoplay=!0),null!=t.playbackRate&&this.onMediaEvent(\"canplay\",(()=>{null!=t.playbackRate&&(this.media.playbackRate=t.playbackRate)}),{once:!0})}onMediaEvent(t,e,i){return this.media.addEventListener(t,e,i),()=>this.media.removeEventListener(t,e,i)}getSrc(){return this.media.currentSrc||this.media.src||\"\"}revokeSrc(){const t=this.getSrc();t.startsWith(\"blob:\")&&URL.revokeObjectURL(t)}canPlayType(t){return\"\"!==this.media.canPlayType(t)}setSrc(t,e){const i=this.getSrc();if(t&&i===t)return;this.revokeSrc();const s=e instanceof Blob&&(this.canPlayType(e.type)||!t)?URL.createObjectURL(e):t;try{this.media.src=s}catch(e){this.media.src=t}}destroy(){this.media.pause(),this.isExternalMedia||(this.media.remove(),this.revokeSrc(),this.media.src=\"\",this.media.load())}setMediaElement(t){this.media=t}play(){return t(this,void 0,void 0,(function*(){return this.media.play()}))}pause(){this.media.pause()}isPlaying(){return!this.media.paused&&!this.media.ended}setTime(t){this.media.currentTime=t}getDuration(){return this.media.duration}getCurrentTime(){return this.media.currentTime}getVolume(){return this.media.volume}setVolume(t){this.media.volume=t}getMuted(){return this.media.muted}setMuted(t){this.media.muted=t}getPlaybackRate(){return this.media.playbackRate}isSeeking(){return this.media.seeking}setPlaybackRate(t,e){null!=e&&(this.media.preservesPitch=e),this.media.playbackRate=t}getMediaElement(){return this.media}setSinkId(t){return this.media.setSinkId(t)}}class h extends e{constructor(t,e){super(),this.timeouts=[],this.isScrollable=!1,this.audioData=null,this.resizeObserver=null,this.lastContainerWidth=0,this.isDragging=!1,this.subscriptions=[],this.subscriptions=[],this.options=t;const i=this.parentFromOptionsContainer(t.container);this.parent=i;const[s,n]=this.initHtml();i.appendChild(s),this.container=s,this.scrollContainer=n.querySelector(\".scroll\"),this.wrapper=n.querySelector(\".wrapper\"),this.canvasWrapper=n.querySelector(\".canvases\"),this.progressWrapper=n.querySelector(\".progress\"),this.cursor=n.querySelector(\".cursor\"),e&&n.appendChild(e),this.initEvents()}parentFromOptionsContainer(t){let e;if(\"string\"==typeof t?e=document.querySelector(t):t instanceof HTMLElement&&(e=t),!e)throw new Error(\"Container not found\");return e}initEvents(){const t=t=>{const e=this.wrapper.getBoundingClientRect(),i=t.clientX-e.left,s=t.clientY-e.top;return[i/e.width,s/e.height]};if(this.wrapper.addEventListener(\"click\",(e=>{const[i,s]=t(e);this.emit(\"click\",i,s)})),this.wrapper.addEventListener(\"dblclick\",(e=>{const[i,s]=t(e);this.emit(\"dblclick\",i,s)})),!0!==this.options.dragToSeek&&\"object\"!=typeof this.options.dragToSeek||this.initDrag(),this.scrollContainer.addEventListener(\"scroll\",(()=>{const{scrollLeft:t,scrollWidth:e,clientWidth:i}=this.scrollContainer,s=t/e,n=(t+i)/e;this.emit(\"scroll\",s,n,t,t+i)})),\"function\"==typeof ResizeObserver){const t=this.createDelay(100);this.resizeObserver=new ResizeObserver((()=>{t().then((()=>this.onContainerResize())).catch((()=>{}))})),this.resizeObserver.observe(this.scrollContainer)}}onContainerResize(){const t=this.parent.clientWidth;t===this.lastContainerWidth&&\"auto\"!==this.options.height||(this.lastContainerWidth=t,this.reRender())}initDrag(){this.subscriptions.push(function(t,e,i,s,n=3,r=0,o=100){if(!t)return()=>{};const a=matchMedia(\"(pointer: coarse)\").matches;let h=()=>{};const l=l=>{if(l.button!==r)return;l.preventDefault(),l.stopPropagation();let d=l.clientX,c=l.clientY,u=!1;const p=Date.now(),m=s=>{if(s.preventDefault(),s.stopPropagation(),a&&Date.now()-pn||Math.abs(m)>n){const s=t.getBoundingClientRect(),{left:n,top:o}=s;u||(null==i||i(d-n,c-o),u=!0),e(l,m,r-n,h-o),d=r,c=h}},g=e=>{if(u){const i=e.clientX,n=e.clientY,r=t.getBoundingClientRect(),{left:o,top:a}=r;null==s||s(i-o,n-a)}h()},f=t=>{t.relatedTarget&&t.relatedTarget!==document.documentElement||g(t)},v=t=>{u&&(t.stopPropagation(),t.preventDefault())},b=t=>{u&&t.preventDefault()};document.addEventListener(\"pointermove\",m),document.addEventListener(\"pointerup\",g),document.addEventListener(\"pointerout\",f),document.addEventListener(\"pointercancel\",f),document.addEventListener(\"touchmove\",b,{passive:!1}),document.addEventListener(\"click\",v,{capture:!0}),h=()=>{document.removeEventListener(\"pointermove\",m),document.removeEventListener(\"pointerup\",g),document.removeEventListener(\"pointerout\",f),document.removeEventListener(\"pointercancel\",f),document.removeEventListener(\"touchmove\",b),setTimeout((()=>{document.removeEventListener(\"click\",v,{capture:!0})}),10)}};return t.addEventListener(\"pointerdown\",l),()=>{h(),t.removeEventListener(\"pointerdown\",l)}}(this.wrapper,((t,e,i)=>{this.emit(\"drag\",Math.max(0,Math.min(1,i/this.wrapper.getBoundingClientRect().width)))}),(t=>{this.isDragging=!0,this.emit(\"dragstart\",Math.max(0,Math.min(1,t/this.wrapper.getBoundingClientRect().width)))}),(t=>{this.isDragging=!1,this.emit(\"dragend\",Math.max(0,Math.min(1,t/this.wrapper.getBoundingClientRect().width)))})))}getHeight(t,e){var i;const s=(null===(i=this.audioData)||void 0===i?void 0:i.numberOfChannels)||1;if(null==t)return 128;if(!isNaN(Number(t)))return Number(t);if(\"auto\"===t){const t=this.parent.clientHeight||128;return(null==e?void 0:e.every((t=>!t.overlay)))?t/s:t}return 128}initHtml(){const t=document.createElement(\"div\"),e=t.attachShadow({mode:\"open\"}),i=this.options.cspNonce&&\"string\"==typeof this.options.cspNonce?this.options.cspNonce.replace(/\"/g,\"\"):\"\";return e.innerHTML=`\\n \\n :host {\\n user-select: none;\\n min-width: 1px;\\n }\\n :host audio {\\n display: block;\\n width: 100%;\\n }\\n :host .scroll {\\n overflow-x: auto;\\n overflow-y: hidden;\\n width: 100%;\\n position: relative;\\n }\\n :host .noScrollbar {\\n scrollbar-color: transparent;\\n scrollbar-width: none;\\n }\\n :host .noScrollbar::-webkit-scrollbar {\\n display: none;\\n -webkit-appearance: none;\\n }\\n :host .wrapper {\\n position: relative;\\n overflow: visible;\\n z-index: 2;\\n }\\n :host .canvases {\\n min-height: ${this.getHeight(this.options.height,this.options.splitChannels)}px;\\n }\\n :host .canvases > div {\\n position: relative;\\n }\\n :host canvas {\\n display: block;\\n position: absolute;\\n top: 0;\\n image-rendering: pixelated;\\n }\\n :host .progress {\\n pointer-events: none;\\n position: absolute;\\n z-index: 2;\\n top: 0;\\n left: 0;\\n width: 0;\\n height: 100%;\\n overflow: hidden;\\n }\\n :host .progress > div {\\n position: relative;\\n }\\n :host .cursor {\\n pointer-events: none;\\n position: absolute;\\n z-index: 5;\\n top: 0;\\n left: 0;\\n height: 100%;\\n border-radius: 2px;\\n }\\n \\n\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n `,[t,e]}setOptions(t){if(this.options.container!==t.container){const e=this.parentFromOptionsContainer(t.container);e.appendChild(this.container),this.parent=e}!0!==t.dragToSeek&&\"object\"!=typeof this.options.dragToSeek||this.initDrag(),this.options=t,this.reRender()}getWrapper(){return this.wrapper}getWidth(){return this.scrollContainer.clientWidth}getScroll(){return this.scrollContainer.scrollLeft}setScroll(t){this.scrollContainer.scrollLeft=t}setScrollPercentage(t){const{scrollWidth:e}=this.scrollContainer,i=e*t;this.setScroll(i)}destroy(){var t,e;this.subscriptions.forEach((t=>t())),this.container.remove(),null===(t=this.resizeObserver)||void 0===t||t.disconnect(),null===(e=this.unsubscribeOnScroll)||void 0===e||e.call(this)}createDelay(t=10){let e,i;const s=()=>{e&&clearTimeout(e),i&&i()};return this.timeouts.push(s),()=>new Promise(((n,r)=>{s(),i=r,e=setTimeout((()=>{e=void 0,i=void 0,n()}),t)}))}convertColorValues(t){if(!Array.isArray(t))return t||\"\";if(t.length<2)return t[0]||\"\";const e=document.createElement(\"canvas\"),i=e.getContext(\"2d\"),s=e.height*(window.devicePixelRatio||1),n=i.createLinearGradient(0,0,0,s),r=1/(t.length-1);return t.forEach(((t,e)=>{const i=e*r;n.addColorStop(i,t)})),n}getPixelRatio(){return Math.max(1,window.devicePixelRatio||1)}renderBarWaveform(t,e,i,s){const n=t[0],r=t[1]||t[0],o=n.length,{width:a,height:h}=i.canvas,l=h/2,d=this.getPixelRatio(),c=e.barWidth?e.barWidth*d:1,u=e.barGap?e.barGap*d:e.barWidth?c/2:0,p=e.barRadius||0,m=a/(c+u)/o,g=p&&\"roundRect\"in i?\"roundRect\":\"rect\";i.beginPath();let f=0,v=0,b=0;for(let t=0;t<=o;t++){const o=Math.round(t*m);if(o>f){const t=Math.round(v*l*s),n=t+Math.round(b*l*s)||1;let r=l-t;\"top\"===e.barAlign?r=0:\"bottom\"===e.barAlign&&(r=h-n),i[g](f*(c+u),r,c,n,p),f=o,v=0,b=0}const a=Math.abs(n[t]||0),d=Math.abs(r[t]||0);a>v&&(v=a),d>b&&(b=d)}i.fill(),i.closePath()}renderLineWaveform(t,e,i,s){const n=e=>{const n=t[e]||t[0],r=n.length,{height:o}=i.canvas,a=o/2,h=i.canvas.width/r;i.moveTo(0,a);let l=0,d=0;for(let t=0;t<=r;t++){const r=Math.round(t*h);if(r>l){const t=a+(Math.round(d*a*s)||1)*(0===e?-1:1);i.lineTo(l,t),l=r,d=0}const o=Math.abs(n[t]||0);o>d&&(d=o)}i.lineTo(l,a)};i.beginPath(),n(0),n(1),i.fill(),i.closePath()}renderWaveform(t,e,i){if(i.fillStyle=this.convertColorValues(e.waveColor),e.renderFunction)return void e.renderFunction(t,i);let s=e.barHeight||1;if(e.normalize){const e=Array.from(t[0]).reduce(((t,e)=>Math.max(t,Math.abs(e))),0);s=e?1/e:1}e.barWidth||e.barGap||e.barAlign?this.renderBarWaveform(t,e,i,s):this.renderLineWaveform(t,e,i,s)}renderSingleCanvas(t,e,i,s,n,r,o){const a=this.getPixelRatio(),h=document.createElement(\"canvas\");h.width=Math.round(i*a),h.height=Math.round(s*a),h.style.width=`${i}px`,h.style.height=`${s}px`,h.style.left=`${Math.round(n)}px`,r.appendChild(h);const l=h.getContext(\"2d\");if(this.renderWaveform(t,e,l),h.width>0&&h.height>0){const t=h.cloneNode(),i=t.getContext(\"2d\");i.drawImage(h,0,0),i.globalCompositeOperation=\"source-in\",i.fillStyle=this.convertColorValues(e.progressColor),i.fillRect(0,0,h.width,h.height),o.appendChild(t)}}renderMultiCanvas(t,e,i,s,n,r){const o=this.getPixelRatio(),{clientWidth:a}=this.scrollContainer,l=i/o;let d=Math.min(h.MAX_CANVAS_WIDTH,a,l),c={};if(e.barWidth||e.barGap){const t=e.barWidth||.5,i=t+(e.barGap||t/2);d%i!=0&&(d=Math.floor(d/i)*i)}const u=i=>{if(i<0||i>=p)return;if(c[i])return;c[i]=!0;const o=i*d,a=Math.min(l-o,d);if(a<=0)return;const h=t.map((t=>{const e=Math.floor(o/l*t.length),i=Math.floor((o+a)/l*t.length);return t.slice(e,i)}));this.renderSingleCanvas(h,e,a,s,o,n,r)},p=Math.ceil(l/d);if(!this.isScrollable){for(let t=0;t1&&(this.unsubscribeOnScroll=this.on(\"scroll\",(()=>{const{scrollLeft:t}=this.scrollContainer,e=Math.floor(t/l*p);Object.keys(c).length>h.MAX_NODES&&(n.innerHTML=\"\",r.innerHTML=\"\",c={}),u(e-1),u(e),u(e+1)})))}renderChannel(t,e,i,s){var{overlay:n}=e,r=function(t,e){var i={};for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&e.indexOf(s)<0&&(i[s]=t[s]);if(null!=t&&\"function\"==typeof Object.getOwnPropertySymbols){var n=0;for(s=Object.getOwnPropertySymbols(t);n0&&(o.style.marginTop=`-${a}px`),this.canvasWrapper.style.minHeight=`${a}px`,this.canvasWrapper.appendChild(o);const h=o.cloneNode();this.progressWrapper.appendChild(h),this.renderMultiCanvas(t,r,i,a,o,h)}render(e){return t(this,void 0,void 0,(function*(){var t;this.timeouts.forEach((t=>t())),this.timeouts=[],this.canvasWrapper.innerHTML=\"\",this.progressWrapper.innerHTML=\"\",null!=this.options.width&&(this.scrollContainer.style.width=\"number\"==typeof this.options.width?`${this.options.width}px`:this.options.width);const i=this.getPixelRatio(),s=this.scrollContainer.clientWidth,n=Math.ceil(e.duration*(this.options.minPxPerSec||0));this.isScrollable=n>s;const r=this.options.fillParent&&!this.isScrollable,o=(r?s:n)*i;if(this.wrapper.style.width=r?\"100%\":`${n}px`,this.scrollContainer.style.overflowX=this.isScrollable?\"auto\":\"hidden\",this.scrollContainer.classList.toggle(\"noScrollbar\",!!this.options.hideScrollbar),this.cursor.style.backgroundColor=`${this.options.cursorColor||this.options.progressColor}`,this.cursor.style.width=`${this.options.cursorWidth}px`,this.audioData=e,this.emit(\"render\"),this.options.splitChannels)for(let i=0;i1&&t.push(e.getChannelData(1)),this.renderChannel(t,this.options,o,0)}Promise.resolve().then((()=>this.emit(\"rendered\")))}))}reRender(){var t;if(null===(t=this.unsubscribeOnScroll)||void 0===t||t.call(this),delete this.unsubscribeOnScroll,!this.audioData)return;const{scrollWidth:e}=this.scrollContainer,{right:i}=this.progressWrapper.getBoundingClientRect();if(this.render(this.audioData),this.isScrollable&&e!==this.scrollContainer.scrollWidth){const{right:t}=this.progressWrapper.getBoundingClientRect();let e=t-i;e*=2,e=e<0?Math.floor(e):Math.ceil(e),e/=2,this.scrollContainer.scrollLeft+=e}}zoom(t){this.options.minPxPerSec=t,this.reRender()}scrollIntoView(t,e=!1){const{scrollLeft:i,scrollWidth:s,clientWidth:n}=this.scrollContainer,r=t*s,o=i,a=i+n,h=n/2;if(this.isDragging){const t=30;r+t>a?this.scrollContainer.scrollLeft+=t:r-ta)&&(this.scrollContainer.scrollLeft=r-(this.options.autoCenter?h:0));const t=r-i-h;e&&this.options.autoCenter&&t>0&&(this.scrollContainer.scrollLeft+=Math.min(t,10))}{const t=this.scrollContainer.scrollLeft,e=t/s,i=(t+n)/s;this.emit(\"scroll\",e,i,t,t+n)}}renderProgress(t,e){if(isNaN(t))return;const i=100*t;this.canvasWrapper.style.clipPath=`polygon(${i}% 0, 100% 0, 100% 100%, ${i}% 100%)`,this.progressWrapper.style.width=`${i}%`,this.cursor.style.left=`${i}%`,this.cursor.style.transform=`translateX(-${100===Math.round(i)?this.options.cursorWidth:0}px)`,this.isScrollable&&this.options.autoScroll&&this.scrollIntoView(t,e)}exportImage(e,i,s){return t(this,void 0,void 0,(function*(){const t=this.canvasWrapper.querySelectorAll(\"canvas\");if(!t.length)throw new Error(\"No waveform data\");if(\"dataURL\"===s){const s=Array.from(t).map((t=>t.toDataURL(e,i)));return Promise.resolve(s)}return Promise.all(Array.from(t).map((t=>new Promise(((s,n)=>{t.toBlob((t=>{t?s(t):n(new Error(\"Could not export image\"))}),e,i)})))))}))}}h.MAX_CANVAS_WIDTH=8e3,h.MAX_NODES=10;class l extends e{constructor(){super(...arguments),this.unsubscribe=()=>{}}start(){this.unsubscribe=this.on(\"tick\",(()=>{requestAnimationFrame((()=>{this.emit(\"tick\")}))})),this.emit(\"tick\")}stop(){this.unsubscribe()}destroy(){this.unsubscribe()}}class d extends e{constructor(t=new AudioContext){super(),this.bufferNode=null,this.playStartTime=0,this.playedDuration=0,this._muted=!1,this._playbackRate=1,this._duration=void 0,this.buffer=null,this.currentSrc=\"\",this.paused=!0,this.crossOrigin=null,this.seeking=!1,this.autoplay=!1,this.addEventListener=this.on,this.removeEventListener=this.un,this.audioContext=t,this.gainNode=this.audioContext.createGain(),this.gainNode.connect(this.audioContext.destination)}load(){return t(this,void 0,void 0,(function*(){}))}get src(){return this.currentSrc}set src(t){if(this.currentSrc=t,this._duration=void 0,!t)return this.buffer=null,void this.emit(\"emptied\");fetch(t).then((e=>{if(e.status>=400)throw new Error(`Failed to fetch ${t}: ${e.status} (${e.statusText})`);return e.arrayBuffer()})).then((e=>this.currentSrc!==t?null:this.audioContext.decodeAudioData(e))).then((e=>{this.currentSrc===t&&(this.buffer=e,this.emit(\"loadedmetadata\"),this.emit(\"canplay\"),this.autoplay&&this.play())}))}_play(){var t;if(!this.paused)return;this.paused=!1,null===(t=this.bufferNode)||void 0===t||t.disconnect(),this.bufferNode=this.audioContext.createBufferSource(),this.buffer&&(this.bufferNode.buffer=this.buffer),this.bufferNode.playbackRate.value=this._playbackRate,this.bufferNode.connect(this.gainNode);let e=this.playedDuration*this._playbackRate;e>=this.duration&&(e=0,this.playedDuration=0),this.bufferNode.start(this.audioContext.currentTime,e),this.playStartTime=this.audioContext.currentTime,this.bufferNode.onended=()=>{this.currentTime>=this.duration&&(this.pause(),this.emit(\"ended\"))}}_pause(){var t;this.paused=!0,null===(t=this.bufferNode)||void 0===t||t.stop(),this.playedDuration+=this.audioContext.currentTime-this.playStartTime}play(){return t(this,void 0,void 0,(function*(){this.paused&&(this._play(),this.emit(\"play\"))}))}pause(){this.paused||(this._pause(),this.emit(\"pause\"))}stopAt(t){var e,i;const s=t-this.currentTime;null===(e=this.bufferNode)||void 0===e||e.stop(this.audioContext.currentTime+s),null===(i=this.bufferNode)||void 0===i||i.addEventListener(\"ended\",(()=>{this.bufferNode=null,this.pause()}),{once:!0})}setSinkId(e){return t(this,void 0,void 0,(function*(){return this.audioContext.setSinkId(e)}))}get playbackRate(){return this._playbackRate}set playbackRate(t){this._playbackRate=t,this.bufferNode&&(this.bufferNode.playbackRate.value=t)}get currentTime(){return(this.paused?this.playedDuration:this.playedDuration+(this.audioContext.currentTime-this.playStartTime))*this._playbackRate}set currentTime(t){const e=!this.paused;e&&this._pause(),this.playedDuration=t/this._playbackRate,e&&this._play(),this.emit(\"seeking\"),this.emit(\"timeupdate\")}get duration(){var t,e;return null!==(t=this._duration)&&void 0!==t?t:(null===(e=this.buffer)||void 0===e?void 0:e.duration)||0}set duration(t){this._duration=t}get volume(){return this.gainNode.gain.value}set volume(t){this.gainNode.gain.value=t,this.emit(\"volumechange\")}get muted(){return this._muted}set muted(t){this._muted!==t&&(this._muted=t,this._muted?this.gainNode.disconnect():this.gainNode.connect(this.audioContext.destination))}canPlayType(t){return/^(audio|video)\\//.test(t)}getGainNode(){return this.gainNode}getChannelData(){const t=[];if(!this.buffer)return t;const e=this.buffer.numberOfChannels;for(let i=0;i{this.emit(\"init\");const{peaks:t,duration:e}=this.options;(s||t&&e)&&this.load(s,t,e).catch((()=>null))}))}updateProgress(t=this.getCurrentTime()){return this.renderer.renderProgress(t/this.getDuration(),this.isPlaying()),t}initTimerEvents(){this.subscriptions.push(this.timer.on(\"tick\",(()=>{if(!this.isSeeking()){const t=this.updateProgress();this.emit(\"timeupdate\",t),this.emit(\"audioprocess\",t)}})))}initPlayerEvents(){this.isPlaying()&&(this.emit(\"play\"),this.timer.start()),this.mediaSubscriptions.push(this.onMediaEvent(\"timeupdate\",(()=>{const t=this.updateProgress();this.emit(\"timeupdate\",t)})),this.onMediaEvent(\"play\",(()=>{this.emit(\"play\"),this.timer.start()})),this.onMediaEvent(\"pause\",(()=>{this.emit(\"pause\"),this.timer.stop()})),this.onMediaEvent(\"emptied\",(()=>{this.timer.stop()})),this.onMediaEvent(\"ended\",(()=>{this.emit(\"finish\")})),this.onMediaEvent(\"seeking\",(()=>{this.emit(\"seeking\",this.getCurrentTime())})),this.onMediaEvent(\"error\",(t=>{this.emit(\"error\",t.error)})))}initRendererEvents(){this.subscriptions.push(this.renderer.on(\"click\",((t,e)=>{this.options.interact&&(this.seekTo(t),this.emit(\"interaction\",t*this.getDuration()),this.emit(\"click\",t,e))})),this.renderer.on(\"dblclick\",((t,e)=>{this.emit(\"dblclick\",t,e)})),this.renderer.on(\"scroll\",((t,e,i,s)=>{const n=this.getDuration();this.emit(\"scroll\",t*n,e*n,i,s)})),this.renderer.on(\"render\",(()=>{this.emit(\"redraw\")})),this.renderer.on(\"rendered\",(()=>{this.emit(\"redrawcomplete\")})),this.renderer.on(\"dragstart\",(t=>{this.emit(\"dragstart\",t)})),this.renderer.on(\"dragend\",(t=>{this.emit(\"dragend\",t)})));{let t;this.subscriptions.push(this.renderer.on(\"drag\",(e=>{if(!this.options.interact)return;let i;this.renderer.renderProgress(e),clearTimeout(t),this.isPlaying()?i=0:!0===this.options.dragToSeek?i=200:\"object\"==typeof this.options.dragToSeek&&void 0!==this.options.dragToSeek&&(i=this.options.dragToSeek.debounceTime),t=setTimeout((()=>{this.seekTo(e)}),i),this.emit(\"interaction\",e*this.getDuration()),this.emit(\"drag\",e)})))}}initPlugins(){var t;(null===(t=this.options.plugins)||void 0===t?void 0:t.length)&&this.options.plugins.forEach((t=>{this.registerPlugin(t)}))}unsubscribePlayerEvents(){this.mediaSubscriptions.forEach((t=>t())),this.mediaSubscriptions=[]}setOptions(t){this.options=Object.assign({},this.options,t),this.renderer.setOptions(this.options),t.audioRate&&this.setPlaybackRate(t.audioRate),null!=t.mediaControls&&(this.getMediaElement().controls=t.mediaControls)}registerPlugin(t){return t._init(this),this.plugins.push(t),this.subscriptions.push(t.once(\"destroy\",(()=>{this.plugins=this.plugins.filter((e=>e!==t))}))),t}getWrapper(){return this.renderer.getWrapper()}getWidth(){return this.renderer.getWidth()}getScroll(){return this.renderer.getScroll()}setScroll(t){return this.renderer.setScroll(t)}setScrollTime(t){const e=t/this.getDuration();this.renderer.setScrollPercentage(e)}getActivePlugins(){return this.plugins}loadAudio(e,s,n,r){return t(this,void 0,void 0,(function*(){var t;if(this.emit(\"load\",e),!this.options.media&&this.isPlaying()&&this.pause(),this.decodedData=null,!s&&!n){const i=this.options.fetchParams||{};window.AbortController&&!i.signal&&(this.abortController=new AbortController,i.signal=null===(t=this.abortController)||void 0===t?void 0:t.signal);const n=t=>this.emit(\"loading\",t);s=yield o.fetchBlob(e,n,i)}this.setSrc(e,s);const a=yield new Promise((t=>{const e=r||this.getDuration();e?t(e):this.mediaSubscriptions.push(this.onMediaEvent(\"loadedmetadata\",(()=>t(this.getDuration())),{once:!0}))}));if(!e&&!s){const t=this.getMediaElement();t instanceof d&&(t.duration=a)}if(n)this.decodedData=i.createBuffer(n,a||0);else if(s){const t=yield s.arrayBuffer();this.decodedData=yield i.decode(t,this.options.sampleRate)}this.decodedData&&(this.emit(\"decode\",this.getDuration()),this.renderer.render(this.decodedData)),this.emit(\"ready\",this.getDuration())}))}load(e,i,s){return t(this,void 0,void 0,(function*(){try{return yield this.loadAudio(e,void 0,i,s)}catch(t){throw this.emit(\"error\",t),t}}))}loadBlob(e,i,s){return t(this,void 0,void 0,(function*(){try{return yield this.loadAudio(\"\",e,i,s)}catch(t){throw this.emit(\"error\",t),t}}))}zoom(t){if(!this.decodedData)throw new Error(\"No audio loaded\");this.renderer.zoom(t),this.emit(\"zoom\",t)}getDecodedData(){return this.decodedData}exportPeaks({channels:t=2,maxLength:e=8e3,precision:i=1e4}={}){if(!this.decodedData)throw new Error(\"The audio has not been decoded yet\");const s=Math.min(t,this.decodedData.numberOfChannels),n=[];for(let t=0;tMath.abs(n)&&(n=i)}r.push(Math.round(n*i)/i)}n.push(r)}return n}getDuration(){let t=super.getDuration()||0;return 0!==t&&t!==1/0||!this.decodedData||(t=this.decodedData.duration),t}toggleInteraction(t){this.options.interact=t}setTime(t){super.setTime(t),this.updateProgress(t),this.emit(\"timeupdate\",t)}seekTo(t){const e=this.getDuration()*t;this.setTime(e)}playPause(){return t(this,void 0,void 0,(function*(){return this.isPlaying()?this.pause():this.play()}))}stop(){this.pause(),this.setTime(0)}skip(t){this.setTime(this.getCurrentTime()+t)}empty(){this.load(\"\",[[0]],.001)}setMediaElement(t){this.unsubscribePlayerEvents(),super.setMediaElement(t),this.initPlayerEvents()}exportImage(){return t(this,arguments,void 0,(function*(t=\"image/png\",e=1,i=\"dataURL\"){return this.renderer.exportImage(t,e,i)}))}destroy(){var t;this.emit(\"destroy\"),null===(t=this.abortController)||void 0===t||t.abort(),this.plugins.forEach((t=>t.destroy())),this.subscriptions.forEach((t=>t())),this.unsubscribePlayerEvents(),this.timer.destroy(),this.renderer.destroy(),super.destroy()}}u.BasePlugin=class extends e{constructor(t){super(),this.subscriptions=[],this.options=t}onInit(){}_init(t){this.wavesurfer=t,this.onInit()}destroy(){this.emit(\"destroy\"),this.subscriptions.forEach((t=>t()))}},u.dom=r;export{u as default};\n", "import WaveSurfer from 'wavesurfer.js'\n\nexport default class AudioPlayer {\n\n static get EVENTS() {\n return {\n LOADING: 'app:audio-player:loading',\n LOADED: 'app:audio-player:loaded',\n UPDATE_TIME: 'app:audio-player:update-time',\n RESET: 'app:audio-player:reset',\n }\n }\n\n constructor(container, { src, onPlay, onPause, onStop }) {\n const styles = window.getComputedStyle(container)\n const primaryColor = styles.getPropertyValue('--primary') || styles.getPropertyValue('--bs-primary')\n const currentColor = styles.color\n\n const waveSurfer = new WaveSurfer({\n container,\n dragToSeek: true,\n cursorColor: primaryColor,\n cursorWidth: 2,\n waveColor: currentColor,\n barWidth: 2,\n barRadius: 10,\n barGap: 4,\n barHeight: 2,\n height: 16,\n })\n\n this.container = container\n this.waveSurfer = waveSurfer\n\n waveSurfer.on('play', onPlay)\n waveSurfer.on('pause', onPause)\n waveSurfer.on('finish', onStop)\n\n waveSurfer.on('finish', () => { this.seekTo(0) })\n\n if (src) {\n this.onLoading(0)\n waveSurfer.on('loading', this.onLoading.bind(this))\n waveSurfer.on('ready', this.onLoaded.bind(this))\n waveSurfer.load(src)\n } else {\n this.onLoaded(0)\n }\n }\n\n destroy() {\n this.waveSurfer.destroy()\n this.waveSurfer = undefined\n }\n\n async play() {\n await this.waveSurfer.play()\n }\n\n pause() {\n this.waveSurfer.pause()\n }\n\n stop() {\n this.waveSurfer.stop()\n }\n\n seekTo(time) {\n this.waveSurfer.seekTo(time)\n }\n\n setPlaybackRate(rate) {\n this.waveSurfer.setPlaybackRate(rate)\n }\n\n getPlaybackRate() {\n return this.waveSurfer.getPlaybackRate()\n }\n\n onLoading(percent) {\n up.emit(this.container, AudioPlayer.EVENTS.LOADING, { percent })\n }\n\n onLoaded(seconds) {\n up.emit(this.container, AudioPlayer.EVENTS.LOADED)\n up.emit(this.container, AudioPlayer.EVENTS.UPDATE_TIME, { milliseconds: seconds * 1000 })\n }\n\n}\n", "export function formatSecondsAsTime(totalSeconds) {\n const seconds = Math.floor(totalSeconds % 60)\n const minutes = Math.floor(totalSeconds / 60)\n\n return [minutes, seconds]\n .map(v => String(v).padStart(2, '0'))\n .join(':')\n}\n\nexport function formatMillisecondsAsTime(milliseconds) {\n return formatSecondsAsTime(milliseconds / 1000)\n}\n", "import AudioPlayer from '../util/audio_player'\nimport { formatMillisecondsAsTime } from '../util/time'\n\nup.compiler('.audio-player', { priority: 1 }, (element, { src }) => {\n const playButton = element.querySelector('.audio-player--play')\n const pauseButton = element.querySelector('.audio-player--pause')\n const waveform = element.querySelector('.audio-player--waveform')\n const time = element.querySelector('.audio-player--time')\n\n let player\n\n function init() {\n element.addEventListener(AudioPlayer.EVENTS.LOADING, onLoading)\n element.addEventListener(AudioPlayer.EVENTS.UPDATE_TIME, onUpdateTime)\n element.addEventListener(AudioPlayer.EVENTS.RESET, reset)\n\n initializePlayer()\n playButton.addEventListener('click', _ => player.play())\n pauseButton.addEventListener('click', _ => player.pause())\n\n // Allow .audio-recorder to access our player instance\n element.getPlayerInstance = () => { return player }\n }\n\n function initializePlayer() {\n player = new AudioPlayer(waveform, {\n src,\n onPlay: _ => setState('playing'),\n onPause: _ => setState('stopped'),\n onStop: _ => setState('stopped'),\n })\n\n setState('stopped')\n }\n\n function destroyPlayer() {\n player?.destroy()\n player = undefined\n }\n\n function reset() {\n destroyPlayer()\n initializePlayer()\n }\n\n function setState(state) {\n element.dataset.state = state\n }\n\n function onLoading({ percent }) {\n percent = Math.min(percent, 100) // sometimes Infinity\n time.textContent = `${Math.round(percent)}%`\n }\n\n function onUpdateTime({ milliseconds = 0 }) {\n time.textContent = formatMillisecondsAsTime(milliseconds)\n }\n\n init()\n\n return function onDestroy() {\n destroyPlayer()\n }\n})\n", "\n import * as module0 from './shared/components/active_storage.js';import * as module1 from './shared/components/audio_player.js';import * as module2 from './shared/components/audio_player_playback_rate.js';import * as module3 from './shared/components/audio_recorder.js';import * as module4 from './shared/components/data_confirm.js';import * as module5 from './shared/components/flash_message.js';import * as module6 from './shared/components/input_type_number.js';import * as module7 from './shared/components/invalid_input.js';import * as module8 from './shared/components/query_diet.js';import * as module9 from './shared/components/submit_change_after_confirm.js'\n\n const modules = [module0,module1,module2,module3,module4,module5,module6,module7,module8,module9];\n\n export default modules;\n export const filenames = ['./shared/components/active_storage.js','./shared/components/audio_player.js','./shared/components/audio_player_playback_rate.js','./shared/components/audio_recorder.js','./shared/components/data_confirm.js','./shared/components/flash_message.js','./shared/components/input_type_number.js','./shared/components/invalid_input.js','./shared/components/query_diet.js','./shared/components/submit_change_after_confirm.js']\n ", "function t(t,i,e,s){return new(e||(e=Promise))((function(o,r){function n(t){try{d(s.next(t))}catch(t){r(t)}}function a(t){try{d(s.throw(t))}catch(t){r(t)}}function d(t){var i;t.done?o(t.value):(i=t.value,i instanceof e?i:new e((function(t){t(i)}))).then(n,a)}d((s=s.apply(t,i||[])).next())}))}\"function\"==typeof SuppressedError&&SuppressedError;class i{constructor(){this.listeners={}}on(t,i,e){if(this.listeners[t]||(this.listeners[t]=new Set),this.listeners[t].add(i),null==e?void 0:e.once){const e=()=>{this.un(t,e),this.un(t,i)};return this.on(t,e),e}return()=>this.un(t,i)}un(t,i){var e;null===(e=this.listeners[t])||void 0===e||e.delete(i)}once(t,i){return this.on(t,i,{once:!0})}unAll(){this.listeners={}}emit(t,...i){this.listeners[t]&&this.listeners[t].forEach((t=>t(...i)))}}class e extends i{constructor(t){super(),this.subscriptions=[],this.options=t}onInit(){}_init(t){this.wavesurfer=t,this.onInit()}destroy(){this.emit(\"destroy\"),this.subscriptions.forEach((t=>t()))}}class s extends i{constructor(){super(...arguments),this.unsubscribe=()=>{}}start(){this.unsubscribe=this.on(\"tick\",(()=>{requestAnimationFrame((()=>{this.emit(\"tick\")}))})),this.emit(\"tick\")}stop(){this.unsubscribe()}destroy(){this.unsubscribe()}}const o=[\"audio/webm\",\"audio/wav\",\"audio/mpeg\",\"audio/mp4\",\"audio/mp3\"];class r extends e{constructor(t){var i,e,o,r,n,a;super(Object.assign(Object.assign({},t),{audioBitsPerSecond:null!==(i=t.audioBitsPerSecond)&&void 0!==i?i:128e3,scrollingWaveform:null!==(e=t.scrollingWaveform)&&void 0!==e&&e,scrollingWaveformWindow:null!==(o=t.scrollingWaveformWindow)&&void 0!==o?o:5,continuousWaveform:null!==(r=t.continuousWaveform)&&void 0!==r&&r,renderRecordedAudio:null===(n=t.renderRecordedAudio)||void 0===n||n,mediaRecorderTimeslice:null!==(a=t.mediaRecorderTimeslice)&&void 0!==a?a:void 0})),this.stream=null,this.mediaRecorder=null,this.dataWindow=null,this.isWaveformPaused=!1,this.lastStartTime=0,this.lastDuration=0,this.duration=0,this.timer=new s,this.subscriptions.push(this.timer.on(\"tick\",(()=>{const t=performance.now()-this.lastStartTime;this.duration=this.isPaused()?this.duration:this.lastDuration+t,this.emit(\"record-progress\",this.duration)})))}static create(t){return new r(t||{})}renderMicStream(t){var i;const e=new AudioContext,s=e.createMediaStreamSource(t),o=e.createAnalyser();s.connect(o),this.options.continuousWaveform&&(o.fftSize=32);const r=o.frequencyBinCount,n=new Float32Array(r);let a=0;this.wavesurfer&&(null!==(i=this.originalOptions)&&void 0!==i||(this.originalOptions=Object.assign({},this.wavesurfer.options)),this.wavesurfer.options.interact=!1,this.options.scrollingWaveform&&(this.wavesurfer.options.cursorWidth=0));const d=setInterval((()=>{var t,i,s,d;if(!this.isWaveformPaused){if(o.getFloatTimeDomainData(n),this.options.scrollingWaveform){const t=Math.floor((this.options.scrollingWaveformWindow||0)*e.sampleRate),i=Math.min(t,this.dataWindow?this.dataWindow.length+r:r),s=new Float32Array(t);if(this.dataWindow){const e=Math.max(0,t-this.dataWindow.length);s.set(this.dataWindow.slice(-i+r),e)}s.set(n,t-r),this.dataWindow=s}else if(this.options.continuousWaveform){if(!this.dataWindow){const e=this.options.continuousWaveformDuration?Math.round(100*this.options.continuousWaveformDuration):(null!==(i=null===(t=this.wavesurfer)||void 0===t?void 0:t.getWidth())&&void 0!==i?i:0)*window.devicePixelRatio;this.dataWindow=new Float32Array(e)}let e=0;for(let t=0;te&&(e=i)}if(a+1>this.dataWindow.length){const t=new Float32Array(2*this.dataWindow.length);t.set(this.dataWindow,0),this.dataWindow=t}this.dataWindow[a]=e,a++}else this.dataWindow=n;if(this.wavesurfer){const t=(null!==(d=null===(s=this.dataWindow)||void 0===s?void 0:s.length)&&void 0!==d?d:0)/100;this.wavesurfer.load(\"\",[this.dataWindow],this.options.scrollingWaveform?this.options.scrollingWaveformWindow:t).then((()=>{this.wavesurfer&&this.options.continuousWaveform&&(this.wavesurfer.setTime(this.getDuration()/1e3),this.wavesurfer.options.minPxPerSec||this.wavesurfer.setOptions({minPxPerSec:this.wavesurfer.getWidth()/this.wavesurfer.getDuration()}))})).catch((t=>{console.error(\"Error rendering real-time recording data:\",t)}))}}}),10);return{onDestroy:()=>{clearInterval(d),null==s||s.disconnect(),null==e||e.close()},onEnd:()=>{this.isWaveformPaused=!0,clearInterval(d),this.stopMic()}}}startMic(i){return t(this,void 0,void 0,(function*(){let t;try{t=yield navigator.mediaDevices.getUserMedia({audio:!(null==i?void 0:i.deviceId)||{deviceId:i.deviceId}})}catch(t){throw new Error(\"Error accessing the microphone: \"+t.message)}const{onDestroy:e,onEnd:s}=this.renderMicStream(t);return this.subscriptions.push(this.once(\"destroy\",e)),this.subscriptions.push(this.once(\"record-end\",s)),this.stream=t,t}))}stopMic(){this.stream&&(this.stream.getTracks().forEach((t=>t.stop())),this.stream=null,this.mediaRecorder=null)}startRecording(i){return t(this,void 0,void 0,(function*(){const t=this.stream||(yield this.startMic(i));this.dataWindow=null;const e=this.mediaRecorder||new MediaRecorder(t,{mimeType:this.options.mimeType||o.find((t=>MediaRecorder.isTypeSupported(t))),audioBitsPerSecond:this.options.audioBitsPerSecond});this.mediaRecorder=e,this.stopRecording();const s=[];e.ondataavailable=t=>{t.data.size>0&&s.push(t.data),this.emit(\"record-data-available\",t.data)};const r=t=>{var i;const o=new Blob(s,{type:e.mimeType});this.emit(t,o),this.options.renderRecordedAudio&&(this.applyOriginalOptionsIfNeeded(),null===(i=this.wavesurfer)||void 0===i||i.load(URL.createObjectURL(o)))};e.onpause=()=>r(\"record-pause\"),e.onstop=()=>r(\"record-end\"),e.start(this.options.mediaRecorderTimeslice),this.lastStartTime=performance.now(),this.lastDuration=0,this.duration=0,this.isWaveformPaused=!1,this.timer.start(),this.emit(\"record-start\")}))}getDuration(){return this.duration}isRecording(){var t;return\"recording\"===(null===(t=this.mediaRecorder)||void 0===t?void 0:t.state)}isPaused(){var t;return\"paused\"===(null===(t=this.mediaRecorder)||void 0===t?void 0:t.state)}isActive(){var t;return\"inactive\"!==(null===(t=this.mediaRecorder)||void 0===t?void 0:t.state)}stopRecording(){var t;this.isActive()&&(null===(t=this.mediaRecorder)||void 0===t||t.stop(),this.timer.stop())}pauseRecording(){var t,i;this.isRecording()&&(this.isWaveformPaused=!0,null===(t=this.mediaRecorder)||void 0===t||t.requestData(),null===(i=this.mediaRecorder)||void 0===i||i.pause(),this.timer.stop(),this.lastDuration=this.duration)}resumeRecording(){var t;this.isPaused()&&(this.isWaveformPaused=!1,null===(t=this.mediaRecorder)||void 0===t||t.resume(),this.timer.start(),this.lastStartTime=performance.now(),this.emit(\"record-resume\"))}static getAvailableAudioDevices(){return t(this,void 0,void 0,(function*(){return navigator.mediaDevices.enumerateDevices().then((t=>t.filter((t=>\"audioinput\"===t.kind))))}))}destroy(){this.applyOriginalOptionsIfNeeded(),super.destroy(),this.stopRecording(),this.stopMic()}applyOriginalOptionsIfNeeded(){this.wavesurfer&&this.originalOptions&&(this.wavesurfer.setOptions(this.originalOptions),delete this.originalOptions)}}export{r as default};\n", "import RecordPlugin from 'wavesurfer.js/plugins/record'\n\nexport default class AudioRecorder {\n\n constructor(audioPlayer, { onRecord, onPause, onProgress, onStop }) {\n const recorder = audioPlayer\n .waveSurfer\n .registerPlugin(new RecordPlugin({\n scrollingWaveform: true,\n scrollingWaveformWindow: 5,\n }))\n\n recorder.on('record-start', onRecord)\n recorder.on('record-resume', onRecord)\n recorder.on('record-pause', () => {\n onPause()\n\n // When pausing, and later resuming, the next progress event will be too far in the future (it includes the paused duration).\n // Note that `record-resume` is emitted after `record-progress` which is why we fix this at `record-pause`.\n this.ignoreNextProgress = true\n })\n recorder.on('record-progress', (milliseconds) => {\n if (this.ignoreNextProgress) {\n this.ignoreNextProgress = false\n } else {\n onProgress(milliseconds)\n }\n })\n recorder.on('record-end', (...args) => {\n // The \"record-end\" event is emitted when destroying.\n // We don't want to call onStop handlers in that case.\n this.recorder && onStop(...args)\n })\n\n this.recorder = recorder\n }\n\n destroy() {\n this.recorder.destroy()\n this.recorder = undefined\n }\n\n async record() {\n const permissions = await this.maybeGetMicrophonePermission()\n const state = permissions?.state\n\n if (state === 'denied') {\n alert('Leider k\u00F6nnen wir nicht auf Dein Mikrofon zugreifen. Bitte \u00E4ndere die Einstellungen oder schreibe uns eine Textnachricht.')\n return\n } else if (state === 'prompt') {\n alert('Damit wir Deine Sprachnachricht aufnehmen k\u00F6nnen, brauchen wir Zugriff auf Dein Mikrofon.')\n // Permission dialog appears when recording starts.\n }\n\n this.ensureRecordingDevicePresent().catch(() => {\n alert('Leider k\u00F6nnen wir kein Aufnahmeger\u00E4t finden. Bitte schlie\u00DFe ein Mikrofon an oder schreibe uns eine Textnachricht!')\n })\n\n try {\n if (this.recorder.isPaused()) {\n this.recorder.resumeRecording()\n } else {\n await this.recorder.startRecording()\n }\n } catch {\n if (!state || state === 'granted') {\n alert('Leider funktioniert das Aufnehmen nicht. Schreibe uns bitte eine Textnachricht!')\n }\n }\n }\n\n async maybeGetMicrophonePermission() {\n // Firefox does not expose \"microphone\" and instead rejects with an error.\n return navigator.permissions?.query({ name: 'microphone' })?.catch(up.util.noop)\n }\n\n async ensureRecordingDevicePresent() {\n const expectedDeviceKind = 'audioinput'\n const devices = await navigator.mediaDevices.enumerateDevices()\n\n if (devices.some(device => device.kind === expectedDeviceKind)) {\n return true\n } else {\n throw new Error(`no ${expectedDeviceKind} device`)\n }\n }\n\n pause() {\n this.recorder.pauseRecording()\n }\n\n stop() {\n this.recorder.stopRecording()\n }\n\n isRecording() {\n return this.recorder.isRecording()\n }\n\n pendingRecording() {\n return this.recorder.isRecording() || this.recorder.isPaused()\n }\n\n}\n", "export default class Duration {\n constructor(seconds) {\n this.seconds = seconds\n this.minutes = this.seconds / 60\n this.hours = this.minutes / 60\n this.days = this.hours / 24\n this.years = this.days / 365\n }\n\n humanized(locale = 'de') {\n const humanizer = new Duration.Humanizer(locale)\n\n if (this.minutes < 1) {\n return humanizer.humanize(this.seconds, 'second')\n } else if (this.hours < 1) {\n return humanizer.humanize(this.minutes, 'minute')\n } else if (this.days < 1) {\n return humanizer.humanize(this.hours, 'hour')\n } else if (this.years < 1) {\n return humanizer.humanize(this.days, 'day')\n } else {\n return humanizer.humanize(this.years, 'year')\n }\n }\n\n static Humanizer = class {\n constructor(locale) {\n this.locale = locale\n }\n\n humanize(number, unit) {\n const formatOptions = {\n style: 'unit',\n unit,\n unitDisplay: 'long',\n }\n return new Intl.NumberFormat(this.locale, formatOptions).format(Math.round(number))\n }\n }\n}\n", "import AudioPlayer from '../util/audio_player'\nimport AudioRecorder from '../util/audio_recorder'\nimport Duration from '../util/duration'\n\nup.compiler('.audio-recorder', (element, { confirmRemove, maxSeconds }) => {\n const audioPlayerElement = element.querySelector('.audio-player')\n if (!audioPlayerElement) throw new Error('.audio-recorder must contain .audio-player')\n\n const recordButton = element.querySelector('.audio-recorder--record')\n const pauseButton = element.querySelector('.audio-recorder--pause')\n const removeButton = element.querySelector('.audio-recorder--remove')\n\n const fileField = element.querySelector('input[type=\"file\"]')\n const form = fileField.closest('form')\n\n const intersectionObserver = new IntersectionObserver(onIntersectionChange, { root: null })\n\n const maxMilliseconds = maxSeconds && parseInt(maxSeconds) * 1000\n\n let recorder\n let submitPending = false\n\n function init() {\n intersectionObserver.observe(element)\n initializeRecorder()\n\n recordButton.addEventListener('click', _ => recorder.record())\n pauseButton.addEventListener('click', _ => recorder.pause())\n removeButton.addEventListener('click', onClickRemove)\n\n form?.addEventListener('app:submit:before', onBeforeSubmit)\n\n // allow accessing recorder in tests\n element.getRecorderInstance = () => { return recorder }\n }\n\n function initializeRecorder() {\n const playerInstance = audioPlayerElement.getPlayerInstance()\n if (!playerInstance) throw new Error('player not initialized')\n\n recorder = new AudioRecorder(playerInstance, { onRecord, onPause, onProgress, onStop })\n setState('empty')\n }\n\n function destroyRecorder() {\n recorder?.destroy()\n recorder = undefined\n }\n\n function onClickRemove() {\n if (confirm(confirmRemove)) reset()\n }\n\n function reset() {\n destroyRecorder()\n up.emit(audioPlayerElement, AudioPlayer.EVENTS.RESET)\n initializeRecorder()\n }\n\n function setState(state) {\n element.dataset.state = state\n }\n\n function onIntersectionChange() {\n if (!up.element.isVisible(element)) {\n // Element became invisible. If we are recording, we want to pause.\n recorder.pause()\n }\n }\n\n function onBeforeSubmit(beforeSubmitEvent) {\n // A recording's blob is only accessible at the stop event, so we stop recording\n // to assign our recorded audio to the file field.\n // The onStop handler will submit again after updating the file field.\n if (recorder.pendingRecording()) {\n submitPending = true\n up.event.halt(beforeSubmitEvent)\n recorder.stop()\n } else {\n setState('submitting')\n submitPending = false\n }\n }\n\n function onRecord() {\n setState('recording')\n fileField.classList.remove('is-invalid')\n }\n\n function onPause() {\n setState('paused')\n }\n\n function onProgress(milliseconds) {\n up.emit(audioPlayerElement, AudioPlayer.EVENTS.UPDATE_TIME, { milliseconds })\n\n handleMaxMillisecondsExceeded(milliseconds)\n }\n\n function handleMaxMillisecondsExceeded(milliseconds) {\n if (!maxMilliseconds) return\n\n if (milliseconds >= maxMilliseconds && recorder.isRecording()) {\n recorder.pause()\n\n const duration = new Duration(maxMilliseconds / 1000)\n const durationHtml = `${duration.humanized()}`\n\n up.layer.open({\n mode: 'modal',\n size: 'auto',\n content: up.element.createFromHTML(`\n
\n

Aufnahme beendet

\n\n
\n

Sprachnachrichten k\u00F6nnen maximal ${durationHtml} lang sein.

\n

Du kannst eine neue Aufnahme starten und versuchen, Dich k\u00FCrzer zu fassen.

\n

Falls Du in ${durationHtml} nicht alles erz\u00E4hlen kannst, schreib uns doch eine Textnachricht.

\n
\n\n
\n \n
\n
\n `),\n })\n }\n }\n\n function onStop(blob) {\n attachRecordingToInputField(blob)\n\n if (submitPending && form) {\n submitAgain()\n }\n }\n\n function attachRecordingToInputField(blob) {\n const dataTransfer = new DataTransfer()\n\n if (blob) {\n const file = new File([blob], 'audio.webm')\n dataTransfer.items.add(file)\n }\n\n fileField.files = dataTransfer.files\n }\n\n function submitAgain() {\n if (form.requestSubmit) {\n form.requestSubmit()\n } else {\n // Safari <16\n form.querySelector('[type=\"submit\"]').click()\n }\n }\n\n init()\n\n return function onDestroy() {\n intersectionObserver.disconnect()\n form?.removeEventListener('app:submit:before', onBeforeSubmit)\n destroyRecorder()\n }\n})\n", "class Application {\n\n constructor() {\n this.configurations = {}\n }\n\n configure(configKey, data) {\n const config = new Configuration(data)\n this.configurations[configKey] = config\n return config\n }\n\n getConfiguration(configKey) {\n return this.configurations[configKey]\n }\n\n}\n\nclass Configuration {\n\n constructor(data) {\n for (const [key, value] of Object.entries(data)) {\n Object.defineProperty(this, key, {\n get: () => value,\n configurable: true, // to allow Jasmine's spyOnProperty\n })\n }\n }\n\n}\n\nexport default new Application()\n", "export default class Timeout {\n constructor(callback, microseconds = 0) {\n this.callback = callback\n this.timerId = null\n this.startedAt = null\n this.initialMicroseconds = microseconds\n this.microsecondsLeft = microseconds\n this.paused = false\n this.resume()\n }\n\n get percent() {\n const percent = Math.round(100 * this.elapsed / this.initialMicroseconds)\n return Math.max(0, Math.min(100, percent))\n }\n\n get percentRemaining() {\n return 100 - this.percent\n }\n\n get elapsed() {\n return this.initialMicroseconds - this.remaining\n }\n\n get remaining() {\n return Math.max(0, this.microsecondsLeft - this._getMicrosecondsSinceLastStarted())\n }\n\n pause() {\n this.clear()\n this.microsecondsLeft -= this._getMicrosecondsSinceLastStarted()\n this.paused = true\n }\n\n resume() {\n this.clear()\n this.startedAt = new Date()\n this.timerId = window.setTimeout(this.callback, this.microsecondsLeft)\n this.paused = false\n }\n\n clear() {\n window.clearTimeout(this.timerId)\n }\n\n _getMicrosecondsSinceLastStarted() {\n return this.paused ? 0 : new Date() - this.startedAt\n }\n}\n", "import application from '../util/application'\nimport environment from '../util/environment'\nimport Timeout from '../util/timeout'\n\nconst config = application.configure('[flash-message]', {\n timeoutDelay: 5000,\n updateFrequency: 100,\n})\n\nup.compiler('[flash-message]', (element, { keepOpen = false }) => {\n const indicator = element.querySelector('[flash-message--timer-indicator]')\n const closeButton = element.querySelector('[flash-message--close]')\n\n function updateIndicator() {\n const percent = removeTimer ? removeTimer.percent : 0\n\n if (!environment.isTest) {\n up.element.setStyle(indicator, {\n transition: `width ${config.updateFrequency}ms linear`,\n width: `${percent}%`,\n })\n }\n }\n\n function removeAutomatically() {\n if (environment.isTest) {\n // We don't want to remove flashes automatically in feature tests because\n // - tests might not see flashes if they are slow,\n // - it could cause flickering behavior if flashes cover elements only sometimes.\n } else {\n updateIndicator()\n remove()\n }\n }\n\n function remove() {\n window.clearInterval(updateIndicatorInterval)\n removeTimer.clear()\n up.animate(element, 'move-to-top').then(() => { element.remove() })\n }\n\n const removeDelay = keepOpen ? (2 ** 31 - 1) : config.timeoutDelay\n const removeTimer = new Timeout(removeAutomatically, removeDelay)\n const updateIndicatorInterval = window.setInterval(updateIndicator, config.updateFrequency)\n\n updateIndicator()\n element.addEventListener('mouseenter', () => { removeTimer.pause() })\n element.addEventListener('mouseleave', () => { removeTimer.resume() })\n closeButton.addEventListener('click', remove)\n\n return remove\n})\n", "\n import * as module0 from './backend/components/click_link_inside.js';import * as module1 from './backend/components/comment.js';import * as module2 from './backend/components/confirm_unsaved_changes.js';import * as module3 from './backend/components/date_picker.js';import * as module4 from './backend/components/file_input.js';import * as module5 from './backend/components/filter.js';import * as module6 from './backend/components/relative_time.js';import * as module7 from './backend/components/styled_alert.js';import * as module8 from './backend/components/templatable.js';import * as module9 from './backend/components/textarea.js'\n\n const modules = [module0,module1,module2,module3,module4,module5,module6,module7,module8,module9];\n\n export default modules;\n export const filenames = ['./backend/components/click_link_inside.js','./backend/components/comment.js','./backend/components/confirm_unsaved_changes.js','./backend/components/date_picker.js','./backend/components/file_input.js','./backend/components/filter.js','./backend/components/relative_time.js','./backend/components/styled_alert.js','./backend/components/templatable.js','./backend/components/textarea.js']\n ", "import environment from '../../shared/util/environment'\n\nup.compiler('form[confirm-unsaved-changes]', (element) => {\n let confirmed = false\n let unsavedChanges = !!element.querySelector('.is-invalid')\n let poppedState\n\n function requestConfirmation({ onConfirm, onCancel }) {\n up.layer.open({\n mode: 'modal',\n size: 'small',\n content: up.element.createFromHTML(`\n
\n

Ungespeicherte \u00C4nderungen

\n \n

Deine Eingaben wurden noch nicht gespeichert.

\n

M\u00F6chtest du fortfahren und alle \u00C4nderungen verwerfen?

\n \n
\n \n \n
\n
\n `),\n onAccepted: () => {\n markConfirmed()\n onConfirm()\n },\n onDismissed: onCancel,\n })\n }\n\n function onChange() {\n unsavedChanges = true\n confirmed = false\n }\n\n function onSubmit() {\n unsavedChanges = false\n }\n\n function needsConfirmation() {\n return unsavedChanges && !confirmed\n }\n\n function markConfirmed() {\n confirmed = true\n }\n\n function isUnsavedFormInsideCurrentLayer() {\n return up.layer.current.contains(element)\n }\n\n function onLinkFollow(event) {\n const { target, renderOptions } = event\n\n const renderTarget = up.fragment.closest(target, renderOptions.target)\n const renderLayer = up.layer.get(renderOptions.layer)\n\n if (renderTarget && !renderTarget.contains(element)) {\n // replaces other fragment\n } else if (renderLayer !== up.layer.get(element)) {\n // targets other layer\n } else if (needsConfirmation()) {\n event.preventDefault()\n requestConfirmation({ onConfirm: _ => up.follow(target) })\n }\n }\n\n function onDismissLayer(event) {\n if (needsConfirmation() && isUnsavedFormInsideCurrentLayer()) {\n event.preventDefault()\n requestConfirmation({ onConfirm: _ => up.layer.dismiss(event.value) })\n }\n }\n\n function onBack(event) {\n if (needsConfirmation()) {\n event.preventDefault()\n\n requestConfirmation({\n onConfirm: () => {\n // Preventing the up:location:restore event does not stop the current location from updating, it only stop the rendering\n // so to go back we just need to render the page again, or close the overlay\n if (isUnsavedFormInsideCurrentLayer() && !up.layer.current.isRoot()) {\n up.layer.dismiss()\n } else {\n up.navigate({ url: window.location.href, history: false })\n }\n },\n onCancel: () => {\n // When dismissing the confirmation, restore the previous state\n window.history.pushState(poppedState, null, up.history.previousLocation)\n },\n })\n }\n }\n\n function onUnload(event) {\n if (environment.isDevelopment) {\n // In development, we regularly auto-reload and want to avoid annoying confirmation dialogs.\n } else if (needsConfirmation()) {\n // The \"beforeunload\" event does not allow displaying a custom dialog; this shows a browser-specific dialog.\n event.preventDefault()\n event.returnValue = true\n }\n }\n\n function onPopstate({ state }) {\n poppedState = state\n }\n\n return [\n up.on(element, 'input', onChange),\n up.on(element, 'up:form:submit', onSubmit),\n up.on('up:link:follow', onLinkFollow),\n up.on('up:layer:dismiss', onDismissLayer),\n up.on('up:location:restore', onBack),\n up.on(window, 'beforeunload', onUnload),\n up.on(window, 'popstate', onPopstate),\n ]\n})\n", "const appleIphone = /iPhone/i;\nconst appleIpod = /iPod/i;\nconst appleTablet = /iPad/i;\nconst appleUniversal = /\\biOS-universal(?:.+)Mac\\b/i;\nconst androidPhone = /\\bAndroid(?:.+)Mobile\\b/i; // Match 'Android' AND 'Mobile'\nconst androidTablet = /Android/i;\nconst amazonPhone = /(?:SD4930UR|\\bSilk(?:.+)Mobile\\b)/i; // Match 'Silk' AND 'Mobile'\nconst amazonTablet = /Silk/i;\nconst windowsPhone = /Windows Phone/i;\nconst windowsTablet = /\\bWindows(?:.+)ARM\\b/i; // Match 'Windows' AND 'ARM'\nconst otherBlackBerry = /BlackBerry/i;\nconst otherBlackBerry10 = /BB10/i;\nconst otherOpera = /Opera Mini/i;\nconst otherChrome = /\\b(CriOS|Chrome)(?:.+)Mobile/i;\nconst otherFirefox = /Mobile(?:.+)Firefox\\b/i; // Match 'Mobile' AND 'Firefox'\n\nexport type UserAgent = string;\nexport type Navigator = {\n userAgent: string;\n platform: string;\n maxTouchPoints?: number;\n};\n\nconst isAppleTabletOnIos13 = (navigator?: Navigator): boolean => {\n return (\n typeof navigator !== 'undefined' &&\n navigator.platform === 'MacIntel' &&\n typeof navigator.maxTouchPoints === 'number' &&\n navigator.maxTouchPoints > 1 &&\n typeof MSStream === 'undefined'\n );\n};\n\nfunction createMatch(userAgent: UserAgent): (regex: RegExp) => boolean {\n return (regex: RegExp): boolean => regex.test(userAgent);\n}\n\nexport type isMobileResult = {\n apple: {\n phone: boolean;\n ipod: boolean;\n tablet: boolean;\n universal: boolean;\n device: boolean;\n };\n amazon: {\n phone: boolean;\n tablet: boolean;\n device: boolean;\n };\n android: {\n phone: boolean;\n tablet: boolean;\n device: boolean;\n };\n windows: {\n phone: boolean;\n tablet: boolean;\n device: boolean;\n };\n other: {\n blackberry: boolean;\n blackberry10: boolean;\n opera: boolean;\n firefox: boolean;\n chrome: boolean;\n device: boolean;\n };\n phone: boolean;\n tablet: boolean;\n any: boolean;\n};\n\nexport type IsMobileParameter = UserAgent | Navigator;\n\nexport default function isMobile(param?: IsMobileParameter): isMobileResult {\n let nav: Navigator = {\n userAgent: '',\n platform: '',\n maxTouchPoints: 0,\n };\n\n if (!param && typeof navigator !== 'undefined') {\n nav = {\n userAgent: navigator.userAgent,\n platform: navigator.platform,\n maxTouchPoints: navigator.maxTouchPoints || 0,\n };\n } else if (typeof param === 'string') {\n nav.userAgent = param;\n } else if (param && param.userAgent) {\n nav = {\n userAgent: param.userAgent,\n platform: param.platform,\n maxTouchPoints: param.maxTouchPoints || 0,\n };\n }\n\n let userAgent = nav.userAgent;\n\n // Facebook mobile app's integrated browser adds a bunch of strings that\n // match everything. Strip it out if it exists.\n let tmp = userAgent.split('[FBAN');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n\n // Twitter mobile app's integrated browser on iPad adds a \"Twitter for\n // iPhone\" string. Same probably happens on other tablet platforms.\n // This will confuse detection so strip it out if it exists.\n tmp = userAgent.split('Twitter');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n\n const match = createMatch(userAgent);\n\n const result: isMobileResult = {\n apple: {\n phone: match(appleIphone) && !match(windowsPhone),\n ipod: match(appleIpod),\n tablet:\n !match(appleIphone) &&\n (match(appleTablet) || isAppleTabletOnIos13(nav)) &&\n !match(windowsPhone),\n universal: match(appleUniversal),\n device:\n (match(appleIphone) ||\n match(appleIpod) ||\n match(appleTablet) ||\n match(appleUniversal) ||\n isAppleTabletOnIos13(nav)) &&\n !match(windowsPhone),\n },\n amazon: {\n phone: match(amazonPhone),\n tablet: !match(amazonPhone) && match(amazonTablet),\n device: match(amazonPhone) || match(amazonTablet),\n },\n android: {\n phone:\n (!match(windowsPhone) && match(amazonPhone)) ||\n (!match(windowsPhone) && match(androidPhone)),\n tablet:\n !match(windowsPhone) &&\n !match(amazonPhone) &&\n !match(androidPhone) &&\n (match(amazonTablet) || match(androidTablet)),\n device:\n (!match(windowsPhone) &&\n (match(amazonPhone) ||\n match(amazonTablet) ||\n match(androidPhone) ||\n match(androidTablet))) ||\n match(/\\bokhttp\\b/i),\n },\n windows: {\n phone: match(windowsPhone),\n tablet: match(windowsTablet),\n device: match(windowsPhone) || match(windowsTablet),\n },\n other: {\n blackberry: match(otherBlackBerry),\n blackberry10: match(otherBlackBerry10),\n opera: match(otherOpera),\n firefox: match(otherFirefox),\n chrome: match(otherChrome),\n device:\n match(otherBlackBerry) ||\n match(otherBlackBerry10) ||\n match(otherOpera) ||\n match(otherFirefox) ||\n match(otherChrome),\n },\n any: false,\n phone: false,\n tablet: false,\n };\n\n result.any =\n result.apple.device ||\n result.android.device ||\n result.windows.device ||\n result.other.device;\n // excludes 'other' devices and ipods, targeting touchscreen phones\n result.phone =\n result.apple.phone || result.android.phone || result.windows.phone;\n result.tablet =\n result.apple.tablet || result.android.tablet || result.windows.tablet;\n\n return result;\n}\n", "export var HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n];\nexport var defaults = {\n _disable: [],\n allowInput: false,\n allowInvalidPreload: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n autoFillDefaultTime: true,\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enableSeconds: false,\n enableTime: false,\n errorHandler: function (err) {\n return typeof console !== \"undefined\" && console.warn(err);\n },\n getWeek: function (givenDate) {\n var date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n var week1 = new Date(date.getFullYear(), 0, 4);\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false,\n};\n", "export var english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: function (nth) {\n var s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n monthAriaLabel: \"Month\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false,\n};\nexport default english;\n", "export var pad = function (number, length) {\n if (length === void 0) { length = 2; }\n return (\"000\" + number).slice(length * -1);\n};\nexport var int = function (bool) { return (bool === true ? 1 : 0); };\nexport function debounce(fn, wait) {\n var t;\n return function () {\n var _this = this;\n var args = arguments;\n clearTimeout(t);\n t = setTimeout(function () { return fn.apply(_this, args); }, wait);\n };\n}\nexport var arrayify = function (obj) {\n return obj instanceof Array ? obj : [obj];\n};\n", "export function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n}\nexport function createElement(tag, className, content) {\n var e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n}\nexport function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n}\nexport function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined;\n}\nexport function createNumberInput(inputClassName, opts) {\n var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (var key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n}\nexport function getEventTarget(event) {\n try {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n catch (error) {\n return event.target;\n }\n}\n", "import { int, pad } from \"../utils\";\nvar doNothing = function () { return undefined; };\nexport var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\nexport var revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: function (dateObj, hour) {\n dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n },\n H: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n J: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n K: function (dateObj, amPM, locale) {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n W: function (dateObj, weekNum, locale) {\n var weekNumber = parseInt(weekNum);\n var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: function (dateObj, year) {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: function (_, ISODate) { return new Date(ISODate); },\n d: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n h: function (dateObj, hour) {\n dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n },\n i: function (dateObj, minutes) {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: function (_, unixMillSeconds) {\n return new Date(parseFloat(unixMillSeconds));\n },\n w: doNothing,\n y: function (dateObj, year) {\n dateObj.setFullYear(2000 + parseFloat(year));\n },\n};\nexport var tokenRegex = {\n D: \"\",\n F: \"\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\",\n};\nexport var formats = {\n Z: function (date) { return date.toISOString(); },\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n H: function (date) { return pad(date.getHours()); },\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n S: function (date) { return pad(date.getSeconds()); },\n U: function (date) { return date.getTime() / 1000; },\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n Y: function (date) { return pad(date.getFullYear(), 4); },\n d: function (date) { return pad(date.getDate()); },\n h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n i: function (date) { return pad(date.getMinutes()); },\n j: function (date) { return date.getDate(); },\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n m: function (date) { return pad(date.getMonth() + 1); },\n n: function (date) { return date.getMonth() + 1; },\n s: function (date) { return date.getSeconds(); },\n u: function (date) { return date.getTime(); },\n w: function (date) { return date.getDay(); },\n y: function (date) { return String(date.getFullYear()).substring(2); },\n};\n", "import { tokenRegex, revFormat, formats, } from \"./formatting\";\nimport { defaults } from \"../types/options\";\nimport { english } from \"../l10n/default\";\nexport var createDateFormatter = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c, _d = _a.isMobile, isMobile = _d === void 0 ? false : _d;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n if (config.formatDate !== undefined && !isMobile) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map(function (c, i, arr) {\n return formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\";\n })\n .join(\"\");\n };\n};\nexport var createDateParser = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (date, givenFormat, timeless, customLocale) {\n if (date !== 0 && !date)\n return undefined;\n var locale = customLocale || l10n;\n var parsedDate;\n var dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined)\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n var format = givenFormat || (config || defaults).dateFormat;\n var datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (config && config.parseDate) {\n parsedDate = config.parseDate(date, format);\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr)) {\n parsedDate = new Date(date);\n }\n else {\n var matched = void 0, ops = [];\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n var token = format[i];\n var isBackSlash = token === \"\\\\\";\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token] && !escaped) {\n regexStr += tokenRegex[token];\n var match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token],\n val: match[++matchIndex],\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\";\n }\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n ops.forEach(function (_a) {\n var fn = _a.fn, val = _a.val;\n return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n });\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n };\n};\nexport function compareDates(date1, date2, timeless) {\n if (timeless === void 0) { timeless = true; }\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n}\nexport function compareTimes(date1, date2) {\n return (3600 * (date1.getHours() - date2.getHours()) +\n 60 * (date1.getMinutes() - date2.getMinutes()) +\n date1.getSeconds() -\n date2.getSeconds());\n}\nexport var isBetween = function (ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexport var calculateSecondsSinceMidnight = function (hours, minutes, seconds) {\n return hours * 3600 + minutes * 60 + seconds;\n};\nexport var parseSeconds = function (secondsSinceMidnight) {\n var hours = Math.floor(secondsSinceMidnight / 3600), minutes = (secondsSinceMidnight - hours * 3600) / 60;\n return [hours, minutes, secondsSinceMidnight - hours * 3600 - minutes * 60];\n};\nexport var duration = {\n DAY: 86400000,\n};\nexport function getDefaultHours(config) {\n var hours = config.defaultHour;\n var minutes = config.defaultMinute;\n var seconds = config.defaultSeconds;\n if (config.minDate !== undefined) {\n var minHour = config.minDate.getHours();\n var minMinutes = config.minDate.getMinutes();\n var minSeconds = config.minDate.getSeconds();\n if (hours < minHour) {\n hours = minHour;\n }\n if (hours === minHour && minutes < minMinutes) {\n minutes = minMinutes;\n }\n if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n seconds = config.minDate.getSeconds();\n }\n if (config.maxDate !== undefined) {\n var maxHr = config.maxDate.getHours();\n var maxMinutes = config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = config.maxDate.getSeconds();\n }\n return { hours: hours, minutes: minutes, seconds: seconds };\n}\n", "\"use strict\";\nif (typeof Object.assign !== \"function\") {\n Object.assign = function (target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n var _loop_1 = function (source) {\n if (source) {\n Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n }\n };\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var source = args_1[_a];\n _loop_1(source);\n }\n return target;\n };\n}\n", "var __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 __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nimport { defaults as defaultOptions, HOOKS, } from \"./types/options\";\nimport English from \"./l10n/default\";\nimport { arrayify, debounce, int, pad } from \"./utils\";\nimport { clearNode, createElement, createNumberInput, findParent, toggleClass, getEventTarget, } from \"./utils/dom\";\nimport { compareDates, createDateParser, createDateFormatter, duration, isBetween, getDefaultHours, calculateSecondsSinceMidnight, parseSeconds, } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nvar DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: __assign(__assign({}, defaultOptions), flatpickr.defaultConfig),\n l10n: English,\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self.onMouseOver = onMouseOver;\n self._createElement = createElement;\n self.createDay = createDay;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.updateValue = updateValue;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth: function (month, yr) {\n if (month === void 0) { month = self.currentMonth; }\n if (yr === void 0) { yr = self.currentYear; }\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n },\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function getClosestActiveElement() {\n var _a;\n return (((_a = self.calendarContainer) === null || _a === void 0 ? void 0 : _a.getRootNode())\n .activeElement || document.activeElement);\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n var config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1) {\n return;\n }\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n var defaultDate = self.config.minDate === undefined ||\n compareDates(new Date(), self.config.minDate) >= 0\n ? new Date()\n : new Date(self.config.minDate.getTime());\n var defaults = getDefaultHours(self.config);\n defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n self.selectedDates = [defaultDate];\n self.latestSelectedDateObj = defaultDate;\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n var prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n var limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n var limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (self.config.maxTime !== undefined &&\n self.config.minTime !== undefined &&\n self.config.minTime > self.config.maxTime) {\n var minBound = calculateSecondsSinceMidnight(self.config.minTime.getHours(), self.config.minTime.getMinutes(), self.config.minTime.getSeconds());\n var maxBound = calculateSecondsSinceMidnight(self.config.maxTime.getHours(), self.config.maxTime.getMinutes(), self.config.maxTime.getSeconds());\n var currentTime = calculateSecondsSinceMidnight(hours, minutes, seconds);\n if (currentTime > maxBound && currentTime < minBound) {\n var result = parseSeconds(minBound);\n hours = result[0];\n minutes = result[1];\n seconds = result[2];\n }\n }\n else {\n if (limitMaxHours) {\n var maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n var minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours() && minutes < minTime.getMinutes())\n minutes = minTime.getMinutes();\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n }\n setHours(hours, minutes, seconds);\n }\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n if (date && date instanceof Date) {\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n }\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n function onYearInput(event) {\n var eventTarget = getEventTarget(event);\n var year = parseInt(eventTarget.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n if (element instanceof Array)\n return element.forEach(function (el) { return bind(el, event, handler, options); });\n element.addEventListener(event, handler, options);\n self._handlers.push({\n remove: function () { return element.removeEventListener(event, handler, options); },\n });\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n return bind(el, \"click\", self[evt]);\n });\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n var debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", function (e) {\n if (self.config.mode === \"range\")\n onMouseOver(getEventTarget(e));\n });\n bind(self._input, \"keydown\", onKeyDown);\n if (self.calendarContainer !== undefined) {\n bind(self.calendarContainer, \"keydown\", onKeyDown);\n }\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", documentClick);\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"click\", onMonthNavClick);\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"click\", selectDate);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n var selText = function (e) {\n return getEventTarget(e).select();\n };\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"click\", timeIncrement);\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n if (self.amPM !== undefined) {\n bind(self.amPM, \"click\", function (e) {\n updateTime(e);\n });\n }\n }\n if (self.config.allowInput) {\n bind(self._input, \"blur\", onBlur);\n }\n }\n function jumpToDate(jumpDate, triggerChange) {\n var jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n var oldYear = self.currentYear;\n var oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n function timeIncrement(e) {\n var eventTarget = getEventTarget(e);\n if (~eventTarget.className.indexOf(\"arrow\"))\n incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n function incrementNumInput(e, delta, inputElem) {\n var target = e && getEventTarget(e);\n var input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n var event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n var fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n var customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, _dayNumber, i) {\n var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n i % 7 === 6) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"\" + self.config.getWeek(date) + \"\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n for (var m = startMonth; m != endMonth; m += delta) {\n var month = self.daysContainer.children[m];\n var startIndex = delta > 0 ? 0 : month.children.length - 1;\n var endIndex = delta > 0 ? month.children.length : -1;\n for (var i = startIndex; i != endIndex; i += delta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n var givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n var loopDelta = delta > 0 ? 1 : -1;\n for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n var month = self.daysContainer.children[m];\n var startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n var numMonthDays = month.children.length;\n for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n var activeElement = getClosestActiveElement();\n var dayFocused = isInView(activeElement || document.body);\n var startElem = current !== undefined\n ? current\n : dayFocused\n ? activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined) {\n self._input.focus();\n }\n else if (!dayFocused) {\n focusOnDayElem(startElem);\n }\n else {\n getNextAvailableDay(startElem, offset);\n }\n }\n function buildMonthDays(year, month) {\n var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n var daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day \" + prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day \" + nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n var dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n var frag = document.createDocumentFragment();\n for (var i = 0; i < self.config.showMonths; i++) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType !== \"dropdown\")\n return;\n var shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (var i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n var container = createElement(\"div\", \"flatpickr-month\");\n var monthNavFragment = window.document.createDocumentFragment();\n var monthElement;\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n bind(self.monthsDropdownContainer, \"change\", function (e) {\n var target = getEventTarget(e);\n var selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container: container,\n yearElement: yearElement,\n monthElement: monthElement,\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (var m = self.config.showMonths; m--;) {\n var month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: function () { return self.__hidePrevMonthArrow; },\n set: function (bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n },\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: function () { return self.__hideNextMonthArrow; },\n set: function (bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n },\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n var defaults = getDefaultHours(self.config);\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n var hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel,\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n var minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel,\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? defaults.hours\n : military2ampm(defaults.hours));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : defaults.minutes);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.hourElement.setAttribute(\"maxlength\", \"2\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.minuteElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n var secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : defaults.seconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.secondElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (var i = self.config.showMonths; i--;) {\n var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n if (!self.weekdayContainer) {\n return;\n }\n var firstDayOfWeek = self.l10n.firstDayOfWeek;\n var weekdays = __spreadArrays(self.l10n.weekdays.shorthand);\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = __spreadArrays(weekdays.splice(firstDayOfWeek, weekdays.length), weekdays.splice(0, firstDayOfWeek));\n }\n for (var i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = \"\\n \\n \" + weekdays.join(\"\") + \"\\n \\n \";\n }\n }\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper: weekWrapper,\n weekNumbers: weekNumbers,\n };\n }\n function changeMonth(value, isOffset) {\n if (isOffset === void 0) { isOffset = true; }\n var delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent, toInitial) {\n if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n if (toInitial === void 0) { toInitial = true; }\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n if (self.config.enableTime === true) {\n var _a = getDefaultHours(self.config), hours = _a.hours, minutes = _a.minutes, seconds = _a.seconds;\n setHours(hours, minutes, seconds);\n }\n self.redraw();\n if (triggerChangeEvent)\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (var i = self._handlers.length; i--;) {\n self._handlers[i].remove();\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n var wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach(function (k) {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n var eventTarget_1 = getEventTarget(e);\n var isCalendarElement = isCalendarElem(eventTarget_1);\n var isInput = eventTarget_1 === self.input ||\n eventTarget_1 === self.altInput ||\n self.element.contains(eventTarget_1) ||\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n var lostFocus = !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n return elem.contains(eventTarget_1);\n });\n if (lostFocus && isIgnored) {\n if (self.config.allowInput) {\n self.setDate(self._input.value, false, self.config.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined &&\n self.input.value !== \"\" &&\n self.input.value !== undefined) {\n updateTime();\n }\n self.close();\n if (self.config &&\n self.config.mode === \"range\" &&\n self.selectedDates.length === 1)\n self.clear(false);\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless) {\n var _a;\n if (timeless === void 0) { timeless = true; }\n var dateToCheck = self.parseDate(date, undefined, timeless);\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (!self.config.enable && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n var bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n for (var i = 0, d = void 0; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck))\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n return bool;\n else if (typeof d === \"string\") {\n var parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onBlur(e) {\n var isInput = e.target === self._input;\n var valueChanged = self._input.value.trimEnd() !== getDateStr();\n if (isInput &&\n valueChanged &&\n !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n }\n function onKeyDown(e) {\n var eventTarget = getEventTarget(e);\n var isInput = self.config.wrap\n ? element.contains(eventTarget)\n : eventTarget === self._input;\n var allowInput = self.config.allowInput;\n var allowKeydown = self.isOpen && (!allowInput || !isInput);\n var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, eventTarget === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n self.close();\n return eventTarget.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(eventTarget) ||\n allowKeydown ||\n allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(eventTarget);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27:\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n var activeElement = getClosestActiveElement();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (activeElement && isInView(activeElement)))) {\n var delta_1 = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta_1);\n else {\n e.stopPropagation();\n changeMonth(delta_1);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n var delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer &&\n eventTarget.$i !== undefined) ||\n eventTarget === self.input ||\n eventTarget === self.altInput) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (eventTarget === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n var elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter(function (x) { return x; });\n var i = elems.indexOf(eventTarget);\n if (i !== -1) {\n var target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(eventTarget) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(eventTarget)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem, cellClass) {\n if (cellClass === void 0) { cellClass = \"flatpickr-day\"; }\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(cellClass) ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n var hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n var containsDisabled = false;\n var minRange = 0, maxRange = 0;\n for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n var hoverableCells = Array.from(self.rContainer.querySelectorAll(\"*:nth-child(-n+\" + self.config.showMonths + \") > .\" + cellClass));\n hoverableCells.forEach(function (dayElem) {\n var date = dayElem.dateObj;\n var timestamp = date.getTime();\n var outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n return;\n }\n else if (containsDisabled && !outOfRange)\n return;\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n });\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function open(e, positionElement) {\n if (positionElement === void 0) { positionElement = self._positionElement; }\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n var eventTarget = getEventTarget(e);\n if (eventTarget) {\n eventTarget.blur();\n }\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n else if (self._input.disabled || self.config.inline) {\n return;\n }\n var wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(function () { return self.hourElement.select(); }, 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return function (date) {\n var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n var boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"allowInvalidPreload\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n var userConfig = __assign(__assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n var formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: function () { return self.config._enable; },\n set: function (dates) {\n self.config._enable = parseDateRules(dates);\n },\n });\n Object.defineProperty(self.config, \"disable\", {\n get: function () { return self.config._disable; },\n set: function (dates) {\n self.config._disable = parseDateRules(dates);\n },\n });\n var timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaultOptions.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaultOptions.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: function () { return self.config._minDate; },\n set: minMaxDateSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: function () { return self.config._maxDate; },\n set: minMaxDateSetter(\"max\"),\n });\n var minMaxTimeSetter = function (type) { return function (val) {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n }; };\n Object.defineProperty(self.config, \"minTime\", {\n get: function () { return self.config._minTime; },\n set: minMaxTimeSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: function () { return self.config._maxTime; },\n set: minMaxTimeSetter(\"max\"),\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (var i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (var i = 0; i < self.config.plugins.length; i++) {\n var pluginConf = self.config.plugins[i](self) || {};\n for (var key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n getInputElem().className + \" \" + self.config.altInputClass;\n }\n triggerEvent(\"onParseConfig\");\n }\n function getInputElem() {\n return self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n self.l10n = __assign(__assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.D = \"(\" + self.l10n.weekdays.shorthand.join(\"|\") + \")\";\n tokenRegex.l = \"(\" + self.l10n.weekdays.longhand.join(\"|\") + \")\";\n tokenRegex.M = \"(\" + self.l10n.months.shorthand.join(\"|\") + \")\";\n tokenRegex.F = \"(\" + self.l10n.months.longhand.join(\"|\") + \")\";\n tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n var userConfig = __assign(__assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (typeof self.config.position === \"function\") {\n return void self.config.position(self, customPositionElement);\n }\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n var positionElement = customPositionElement || self._positionElement;\n var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n var top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n var left = window.pageXOffset + inputBounds.left;\n var isCenter = false;\n var isRight = false;\n if (configPosHorizontal === \"center\") {\n left -= (calendarWidth - inputBounds.width) / 2;\n isCenter = true;\n }\n else if (configPosHorizontal === \"right\") {\n left -= calendarWidth - inputBounds.width;\n isRight = true;\n }\n toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n var right = window.document.body.offsetWidth -\n (window.pageXOffset + inputBounds.right);\n var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = top + \"px\";\n if (!rightMost) {\n self.calendarContainer.style.left = left + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = right + \"px\";\n }\n else {\n var doc = getDocumentStyleSheet();\n if (doc === undefined)\n return;\n var bodyWidth = window.document.body.offsetWidth;\n var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n var centerBefore = \".flatpickr-calendar.centerMost:before\";\n var centerAfter = \".flatpickr-calendar.centerMost:after\";\n var centerIndex = doc.cssRules.length;\n var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n self.calendarContainer.style.left = centerLeft + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function getDocumentStyleSheet() {\n var editableSheet = null;\n for (var i = 0; i < document.styleSheets.length; i++) {\n var sheet = document.styleSheets[i];\n if (!sheet.cssRules)\n continue;\n try {\n sheet.cssRules;\n }\n catch (err) {\n continue;\n }\n editableSheet = sheet;\n break;\n }\n return editableSheet != null ? editableSheet : createStyleSheet();\n }\n function createStyleSheet() {\n var style = document.createElement(\"style\");\n document.head.appendChild(style);\n return style.sheet;\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n buildMonthSwitch();\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n var isSelectable = function (day) {\n return day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n };\n var t = findParent(getEventTarget(e), isSelectable);\n if (t === undefined)\n return;\n var target = t;\n var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n var selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n var isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n var single = self.config.mode === \"single\" && !self.config.enableTime;\n var range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n var CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate],\n positionElement: [updatePositionElement],\n clickOpens: [\n function () {\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n else {\n self._input.removeEventListener(\"focus\", self.open);\n self._input.removeEventListener(\"click\", self.open);\n }\n },\n ],\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (var key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach(function (x) { return x(); });\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach(function (x) { return x(); });\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(true);\n }\n function setSelectedDate(inputDate, format) {\n var dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n self.selectedDates = (self.config.allowInvalidPreload\n ? dates\n : dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); }));\n if (self.config.mode === \"range\")\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n function setDate(date, triggerChange, format) {\n if (triggerChange === void 0) { triggerChange = false; }\n if (format === void 0) { format = self.config.dateFormat; }\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate(undefined, triggerChange);\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map(function (rule) {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined),\n };\n return rule;\n })\n .filter(function (x) { return x; });\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n var preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n }\n function setupInputs() {\n self.input = getInputElem();\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n updatePositionElement();\n }\n function updatePositionElement() {\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n var inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n if (self.input.getAttribute(\"step\"))\n self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", function (e) {\n self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n if (self.config === undefined)\n return;\n var hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (var i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (var i = 0; i < self.selectedDates.length; i++) {\n var selectedDate = self.selectedDates[i];\n if (selectedDate instanceof Date &&\n compareDates(selectedDate, date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach(function (yearElement, i) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(specificFormat) {\n var format = specificFormat ||\n (self.config.altInput ? self.config.altFormat : self.config.dateFormat);\n return self.selectedDates\n .map(function (dObj) { return self.formatDate(dObj, format); })\n .filter(function (d, i, arr) {\n return self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i;\n })\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n function updateValue(triggerChange) {\n if (triggerChange === void 0) { triggerChange = true; }\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n var eventTarget = getEventTarget(e);\n var isPrevMonth = self.prevMonthNav.contains(eventTarget);\n var isNextMonth = self.nextMonthNav.contains(eventTarget);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(eventTarget) >= 0) {\n eventTarget.select();\n }\n else if (eventTarget.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (eventTarget.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n var newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n}\nfunction _flatpickr(nodeList, config) {\n var nodes = Array.prototype.slice\n .call(nodeList)\n .filter(function (x) { return x instanceof HTMLElement; });\n var instances = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n}\nif (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n}\nvar flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n};\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n en: __assign({}, English),\n default: __assign({}, English),\n};\nflatpickr.localize = function (l10n) {\n flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), config);\n};\nflatpickr.parseDate = createDateParser({});\nflatpickr.formatDate = createDateFormatter({});\nflatpickr.compareDates = compareDates;\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n}\nDate.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\nif (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n}\nexport default flatpickr;\n", "import detectMobile from 'ismobilejs'\nimport flatpickr from 'flatpickr/dist/esm'\nimport { German } from 'flatpickr/dist/l10n/de.js'\nimport 'flatpickr/dist/themes/light.css'\n\nup.compiler('[date-picker]', (element, { previousMonthIcon, nextMonthIcon }) => {\n\n // keep native date picker on mobile devices\n if (detectMobile().any) return\n\n const labels = Array.from(element.labels) // fetch labels now, because flatpickr turns it into type \"hidden\" (which can't have labels)\n\n const picker = flatpickr(element, {\n locale: German,\n allowInput: true,\n altInput: true,\n altFormat: 'd.m.Y',\n dateFormat: 'Y-m-d',\n ariaDateFormat: 'd.F Y',\n prevArrow: previousMonthIcon,\n nextArrow: nextMonthIcon,\n })\n\n const altInput = picker.altInput\n\n // Copy styles to picker input from original input\n altInput.setAttribute('style', element.getAttribute('style'))\n\n // Helper attribute for tests\n altInput.setAttribute('date-picker--user-input', true)\n\n // Update label(s) to point to user input, instead of the (now hidden) `element`\n if (!altInput.id) {\n altInput.setAttribute('id', `date-picker-${Math.random().toString(36).replace(/^0\\./, '')}`)\n }\n labels.forEach((label) => {\n label.setAttribute('for', altInput.id)\n })\n\n // When users type into the input, we want to immediately reflect their input in the picker.\n // For that, we need to trigger a `blur` event. Because that would also update the user input,\n // we only do it when a well-formatted value is given.\n altInput.addEventListener('input', function() {\n if (!altInput.value || altInput.value.match(/^\\d\\d?.\\d\\d?.\\d{4}$/)) {\n up.emit(altInput, 'blur')\n }\n })\n\n // When an invalid value was entered, the field ist blurred, we want to clear the user input.\n // Otherwise flatpickr would try to parse it and maybe pick a date that the user did not actually enter.\n // Discarding any input in that case felt like the saner approach.\n altInput.addEventListener('change', function() {\n if (altInput.value && !altInput.value.match(/^\\d\\d?.\\d\\d?.\\d{4}$/)) {\n altInput.value = ''\n }\n })\n\n return () => {\n picker.destroy()\n }\n\n})\n", "export default class TimeAgo {\n\n constructor(time) {\n this.time = time\n\n this.rtf = new Intl.RelativeTimeFormat('de')\n this.now = new Date()\n\n this.seconds = (this.now - this.time) / 1000\n this.minutes = this.seconds / 60\n this.hours = this.minutes / 60\n this.days = this.hours / 24\n this.years = this.days / 365\n }\n\n beyond(value, unit) {\n if (!unit.endsWith('s')) unit += 's' // use e.g 'hours' when called with 'hour'\n\n return this[unit] >= value\n }\n\n humanized() {\n if (this.minutes < 1) {\n return this.rtf.format(Math.round(-this.seconds), 'seconds')\n } else if (this.hours < 1) {\n return this.rtf.format(Math.round(-this.minutes), 'minutes')\n } else if (this.days < 1) {\n return this.rtf.format(Math.round(-this.hours), 'hours')\n } else if (this.years < 1) {\n return this.rtf.format(Math.round(-this.days), 'days')\n } else {\n return this.rtf.format(Math.round(-this.years), 'years')\n }\n }\n\n}\n", "import TimeAgo from '../util/time_ago'\n\nup.compiler('[relative-time]', function(element, { timestamp, highlightFrom }) {\n const time = new Date(timestamp)\n const highlightTime = highlightFrom && new Date(highlightFrom)\n\n function update() {\n const timeAgo = new TimeAgo(time)\n element.textContent = timeAgo.humanized()\n\n if (highlightTime && highlightTime <= timeAgo.now) {\n element.classList.add('text-danger', 'fw-bold')\n }\n }\n\n function getRefreshDelay() {\n const seconds = new TimeAgo(time).beyond(1, 'minute') ? 60 : 1\n return seconds * 1000\n }\n\n const updateInterval = setInterval(update, getRefreshDelay())\n update()\n\n return () => {\n clearInterval(updateInterval)\n }\n})\n", "var e=new Map;function t(t){var o=e.get(t);o&&o.destroy()}function o(t){var o=e.get(t);o&&o.update()}var r=null;\"undefined\"==typeof window?((r=function(e){return e}).destroy=function(e){return e},r.update=function(e){return e}):((r=function(t,o){return t&&Array.prototype.forEach.call(t.length?t:[t],function(t){return function(t){if(t&&t.nodeName&&\"TEXTAREA\"===t.nodeName&&!e.has(t)){var o,r=null,n=window.getComputedStyle(t),i=(o=t.value,function(){a({testForHeightReduction:\"\"===o||!t.value.startsWith(o),restoreTextAlign:null}),o=t.value}),l=function(o){t.removeEventListener(\"autosize:destroy\",l),t.removeEventListener(\"autosize:update\",s),t.removeEventListener(\"input\",i),window.removeEventListener(\"resize\",s),Object.keys(o).forEach(function(e){return t.style[e]=o[e]}),e.delete(t)}.bind(t,{height:t.style.height,resize:t.style.resize,textAlign:t.style.textAlign,overflowY:t.style.overflowY,overflowX:t.style.overflowX,wordWrap:t.style.wordWrap});t.addEventListener(\"autosize:destroy\",l),t.addEventListener(\"autosize:update\",s),t.addEventListener(\"input\",i),window.addEventListener(\"resize\",s),t.style.overflowX=\"hidden\",t.style.wordWrap=\"break-word\",e.set(t,{destroy:l,update:s}),s()}function a(e){var o,i,l=e.restoreTextAlign,s=void 0===l?null:l,d=e.testForHeightReduction,u=void 0===d||d,c=n.overflowY;if(0!==t.scrollHeight&&(\"vertical\"===n.resize?t.style.resize=\"none\":\"both\"===n.resize&&(t.style.resize=\"horizontal\"),u&&(o=function(e){for(var t=[];e&&e.parentNode&&e.parentNode instanceof Element;)e.parentNode.scrollTop&&t.push([e.parentNode,e.parentNode.scrollTop]),e=e.parentNode;return function(){return t.forEach(function(e){var t=e[0],o=e[1];t.style.scrollBehavior=\"auto\",t.scrollTop=o,t.style.scrollBehavior=null})}}(t),t.style.height=\"\"),i=\"content-box\"===n.boxSizing?t.scrollHeight-(parseFloat(n.paddingTop)+parseFloat(n.paddingBottom)):t.scrollHeight+parseFloat(n.borderTopWidth)+parseFloat(n.borderBottomWidth),\"none\"!==n.maxHeight&&i>parseFloat(n.maxHeight)?(\"hidden\"===n.overflowY&&(t.style.overflow=\"scroll\"),i=parseFloat(n.maxHeight)):\"hidden\"!==n.overflowY&&(t.style.overflow=\"hidden\"),t.style.height=i+\"px\",s&&(t.style.textAlign=s),o&&o(),r!==i&&(t.dispatchEvent(new Event(\"autosize:resized\",{bubbles:!0})),r=i),c!==n.overflow&&!s)){var v=n.textAlign;\"hidden\"===n.overflow&&(t.style.textAlign=\"start\"===v?\"end\":\"start\"),a({restoreTextAlign:v,testForHeightReduction:!0})}}function s(){a({testForHeightReduction:!0,restoreTextAlign:null})}}(t)}),t}).destroy=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],t),e},r.update=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],o),e});var n=r;export default n;\n", "import autosize from 'autosize'\n\nexport default function insertAtCaret(textarea, newText) {\n const caretStart = textarea.selectionStart || 0\n const caretEnd = textarea.selectionEnd || 0\n const originalText = textarea.value\n const leadingText = originalText.substring(0, caretStart)\n const trailingText = originalText.substring(caretEnd, originalText.length)\n textarea.value = leadingText + newText\n textarea.focus()\n textarea.value = leadingText + newText + trailingText\n textarea.dispatchEvent(new Event('input'))\n\n // Using newText.length for this calculation ends up with a too big range as newText has different line breaks \\r\\n\n textarea.setSelectionRange(leadingText.length, textarea.value.length - trailingText.length)\n autosize.update(textarea)\n}\n", "import insertAtCaret from '../util/insert_at_caret'\n\nup.compiler('[templatable]', (element, { templatesPath }) => {\n const textarea = element.querySelector('textarea')\n if (textarea.disabled) return\n\n const opener = up.element.createFromHTML(`\n \n `)\n\n function onClickOpener() {\n up.layer.open({\n url: templatesPath,\n mode: 'modal',\n size: 'large',\n focus: '[name*=\"query\"]',\n history: false,\n onAccepted: function({ value }) { insertAtCaret(textarea, value) },\n })\n }\n\n opener.addEventListener('click', onClickOpener)\n element.prepend(opener)\n})\n", "import autosize from 'autosize'\n\nup.compiler('textarea', (element) => {\n autosize(element)\n\n // Textareas are sometimes not initialized to the correct height, probably due to (re)paint issues.\n // This should avoid the problem most of the time. Sorry.\n const updateSizeTimeout = setTimeout(() => { autosize.update(element) }, 50)\n\n return () => {\n clearTimeout(updateSizeTimeout)\n autosize.destroy(element)\n }\n})\n"], "mappings": "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", "names": ["require_audio_player_playback_rate", "__commonJSMin", "element", "selector", "playerElement", "field", "init", "onInput", "getPlayer", "updateLabel", "rate", "require_data_confirm", "__commonJSMin", "element", "onClick", "event", "message", "require_input_type_number", "__commonJSMin", "element", "event", "key", "require_invalid_input", "__commonJSMin", "invalidClass", "selector", "target", "element", "inputGroup", "formGroup", "setInputGroupInvalid", "isInvalid", "unsetOtherFormGroupFieldsInvalid", "unsetInvalid", "require_query_diet", "__commonJSMin", "element", "require_submit_change_after_confirm", "__commonJSMin", "element", "message", "onChange", "_event", "require_click_link_inside", "__commonJSMin", "element", "event", "linkInside", "clickedLink", "require_comment", "__commonJSMin", "element", "require_de", "__commonJSMin", "exports", "module", "global", "factory", "fp", "German", "de", "require_file_input", "__commonJSMin", "element", "input", "button", "filename", "previewImage", "onDragOver", "event", "onDrop", "onFilePicked", "pickFile", "updateFilename", "updatePreview", "filenames", "file", "readImageAsDataURL", "dataURL", "resolve", "reject", "reader", "require_filter", "__commonJSMin", "filterForm", "resetButton", "queryInput", "require_styled_alert", "__commonJSMin", "element", "text", "onClick", "content", "line", "__webpack_modules__", "originalFn", "name", "obj", "mockableFn", "noop", "asyncNoop", "memoize", "func", "cachedValue", "cached", "args", "normalizeURL", "url", "options", "newOptions", "parts", "parseURL", "normalized", "isCrossOrigin", "pathname", "matchURLs", "leftURL", "rightURL", "matchableURL", "matchableURLPatternAtom", "patternAtom", "APP_PROTOCOL", "APP_HOSTNAME", "urlOrAnchor", "isString", "link", "normalizeMethod", "method", "methodAllowsPayload", "iteratee", "block", "item", "map", "list", "mapped", "i", "mapObject", "array", "pairer", "merger", "object", "pair", "each", "isNull", "isUndefined", "isDefined", "negate", "isMissing", "isGiven", "isBlank", "value", "isObject", "isList", "isOptions", "presence", "tester", "isPresent", "isFunction", "isBoolean", "isNumber", "typeOfResult", "isElement", "isRegExp", "isError", "isJQuery", "isElementish", "isPromise", "isArray", "isFormData", "toArray", "copyArrayLike", "isNodeList", "isArguments", "isHTMLCollection", "wrapList", "copy", "arrayLike", "merge", "sources", "mergeDefined", "result", "source", "key", "defaults", "parseArgIntoOptions", "argKey", "extractOptions", "findInList", "match", "element", "some", "findResult", "every", "compact", "filterList", "compactObject", "pickBy", "uniq", "uniqBy", "mapper", "seenElements", "elem", "index", "matches", "reject", "intersect", "array1", "array2", "contains", "scheduleTimer", "millis", "callback", "queueTask", "task", "last", "subValue", "containsAll", "values", "subValues", "objectContains", "subObject", "reducedValue", "pick", "isEqual", "keys", "filtered", "omit", "_value", "unresolvablePromise", "remove", "evalOption", "evalAutoOption", "autoMeans", "ESCAPE_HTML_ENTITY_MAP", "escapeHTML", "string", "char", "escapeRegExp", "pluckKey", "renameKey", "oldKey", "newKey", "extractLastArg", "extractCallback", "identity", "arg", "sequence", "functions", "fn", "flatten", "flattened", "flatMap", "always", "promise", "newDeferred", "resolveFn", "rejectFn", "nativePromise", "givenResolve", "givenReject", "isBasicObjectProperty", "k", "a", "b", "isEqualList", "aKeys", "bKeys", "aKey", "PARSE_TOKEN_PATTERNS", "parseTokens", "separator", "pattern", "wrapValue", "constructor", "nextUid", "uid", "reverse", "replaceValue", "matchValue", "replacementValue", "renameKeys", "renameKeyFn", "renamed", "camelToKebabCase", "str", "lowerCaseFirst", "upperCaseFirst", "defineDelegates", "props", "targetProvider", "prop", "target", "newValue", "stringifyArg", "placeholder", "attr", "error", "SPRINTF_PLACEHOLDERS", "sprintf", "message", "useMemoizeCacheEntry", "cacheEntry", "buildMemoizeCacheEntry", "oldImpl", "self", "e", "memoizeMethod", "propLiteral", "cachingImpl", "cache", "cacheKey", "safeStringifyJSON", "json", "escapeHighASCII", "unicodeEscape", "variant", "changes", "fail", "isCritical", "muteUncriticalRejection", "throwCritical", "muteUncriticalSync", "report", "event", "guard", "guardFn", "u", "submitForm", "form", "canPushState", "canJQuery", "canHasSelector", "popCookie", "assertConfirmed", "__unused_webpack_module", "__unused_webpack_exports", "__webpack_require__", "first", "selector", "subtree", "root", "results", "selectorOrElement", "getOne", "ancestor", "around", "getList", "valueToList", "hide", "show", "toggle", "newVisible", "isVisible", "toggleAttr", "newPresent", "setAttrs", "attrs", "setTemporaryAttrs", "oldAttrs", "metaContent", "attrSelector", "insertBefore", "existingElement", "newElement", "createFromSelector", "includePath", "parseSelector", "rootElement", "depthElement", "previousElement", "includeSegment", "tagName", "id", "classNames", "attributes", "className", "attributeName", "attributeValue", "klass", "setInlineStyle", "excludeRaw", "includeRaw", "includeSelectorWithoutAttrValues", "attrValues", "removeAttrSelectorValues", "depthSelector", "parsed", "_match", "replaceAttrSelectors", "ATTR_SELECTOR_PATTERN", "replacement", "operator", "quote", "affix", "parent", "position", "SINGLETON_TAG_NAMES", "isSingleton", "elementTagName", "attribute", "idSelector", "classSelector", "createBrokenDocumentFromHTML", "html", "fixParserDamage", "scriptish", "clone", "createFromHTML", "range", "elements", "getRoot", "paint", "concludeCSSTransition", "undo", "setTemporaryStyle", "hasCSSTransition", "styleHash", "duration", "fixedToAbsolute", "elementRectAsFixed", "offsetParentRect", "computedStyleNumber", "setMissingAttrs", "setMissingAttr", "unwrap", "wrapper", "preservingFocus", "wrappedNodes", "wrappedNode", "wrapChildren", "childNode", "oldFocusElement", "stringAttr", "booleanAttr", "pass", "booleanOrStringAttr", "trueValue", "numberAttr", "jsonAttr", "callbackAttr", "exposedKeys", "mainKey", "code", "exposedValues", "closestAttr", "parseFn", "newStyles", "oldStyles", "inlineStyle", "addTemporaryClass", "computedStyle", "style", "extractFromStyleObject", "rawValue", "keyOrKeys", "unit", "isUpPrefixed", "upAttrs", "attrNames", "upClasses", "cleanJQuery", "isEmpty", "crossOriginSelector", "isIntersectingWindow", "margin", "rect", "unionSelector", "includes", "excludes", "__webpack_exports__", "_options", "other", "blueprintFn", "enabledKey", "enabled", "newEnabled", "parserOptions", "keyOptions", "parser", "attrValueFn", "attrName", "normalizeFn", "failKey", "failAttrNames", "optionsFn", "fnResult", "prefix", "option", "capacity", "normalizeKey", "oldestKey", "padding", "SHIFT_CLASS", "styleProp", "originalValue", "cleaner", "renderResult", "existingValue", "eventPlan", "layer", "oldElement", "time", "etag", "steps", "responseDoc", "noneOptions", "_a", "resultOrError", "onRendered", "onFinished", "guardedOnFinished", "onRequest", "request", "onRender", "guardEvent", "abort", "fragments", "origin", "newLayer", "abortOptions", "onApplicable", "unbindClosing", "otherLayerSteps", "buildOptions", "beforeNew", "optionsWithLayerDefaults", "scrollingOptions", "step", "finder", "focusCapsule", "oldFragments", "motionEndPromises", "fragment", "newFragments", "morphOptions", "oldWrapper", "newWrapper", "wrapperStep", "partner", "partnerSelector", "lookupOpts", "plan", "keepPlans", "keepable", "keepPlan", "keepableClone", "viewports", "viewport", "cursorProps", "reviver", "formerParent", "verbPast", "verbPastUpperCaseFirst", "newFocusElement", "_newPageReason", "responseOrError", "successAttrs", "failAttrs", "renderOptions", "requestAttributesOptions", "response", "retryOptions", "finalRenderOptions", "originalRenderOptions", "inputTarget", "effectiveTarget", "verifyResult", "expiredResponse", "meta", "responseURL", "serverLocation", "hash", "serverTarget", "plans", "layers", "targets", "change", "matchedPlan", "primaryPlan", "assets", "docOptions", "opts", "getPlanProps", "reason", "planTargets", "humanizedLayerOption", "compilers", "data", "dataMap", "compiler", "compileArgs", "destructorOrDestructors", "dataList", "elementOrElements", "appliedCompilers", "lastFrame", "completedProperty", "oldTransition", "oldTransitionProperties", "oldTransitionFrame", "cleanable", "destructors", "destructor", "selectOptions", "messageArgs", "type", "expectedArgCount", "applyCallback", "listeners", "unbindFns", "listener", "eventType", "eventTypes", "fixTypes", "unbindFn", "field", "rootOptions", "container", "fieldOptions", "delay", "diff", "callbackOptions", "callbackReturnValues", "callbackDone", "previous", "next", "previousValue", "nextValue", "fieldOrForm", "solutions", "solution", "formGroup", "simpleSelectors", "simpleSelector", "containerWithAttr", "overrideOptions", "solutionDelays", "shortestDelay", "dirtySolutions", "dirtyOrigins", "dirtyFields", "dirtyNames", "dirtyRenderOptionsList", "renderingPromise", "headers", "names", "rediscoveredElement", "focusedElement", "opt", "preprocessed", "condition", "DESCENDANT_SELECTOR", "preferOldElement", "PREVENT_SCROLL_OPTIONS", "autofocusElement", "hashTarget", "oldAbortable", "newFragment", "clientX", "clientY", "hittableElement", "title", "metaTags", "lang", "location", "previousLocation", "part", "_part", "parentElement", "elementAttrs", "content", "originClicked", "closeOptions", "label", "fieldSelector", "fieldsAnywhere", "fieldsInLayer", "halt", "closeFn", "urlPattern", "resolution", "closeValue", "destroyOptions", "boxDone", "backdropDone", "verb", "stack", "originLayer", "baseLayer", "recursiveOptions", "descendants", "dismissOptions", "descendant", "overlay", "href", "upHREF", "alias", "normalizedLocation", "cluster", "startMotion", "memory", "mutedAnimator", "el", "eventAttrs", "isActive", "doForward", "unbindFinish", "script", "nonce", "argNames", "callbackThis", "thisArg", "wrappedScript", "allowedNonces", "getPageNonce", "warn", "pageNonce", "focusOptions", "child", "raw", "entry", "formData", "query", "base", "valueElements", "valueElement", "entries", "fields", "params", "file", "objects", "allParams", "TRANSITION_DELAY", "nextStepDelay", "width", "GLOBAL_DEFAULTS", "PRELOAD_OVERRIDES", "SHARED_KEYS", "CONTENT_KEYS", "LATE_KEYS", "navigateDefaults", "preloadOverrides", "preprocess", "rememberOriginLayer", "finalize", "preprocessedOptions", "lateDefaults", "assertContentGiven", "contentKey", "failOverrides", "overrides", "unprefixed", "deriveFailOptions", "main", "extension", "mergeFinished", "layerLookupOptions", "selectors", "log", "responseAttrs", "methodFromResponse", "urlFromResponse", "subtreeElements", "subtreeElement", "csrfHeader", "csrfToken", "trackingRequest", "targetAtoms", "except", "testFn", "_request", "Route", "newRequest", "cachedRequest", "headerName", "varyHeader", "cachedTokens", "newTokens", "route", "superseded", "oldRequest", "r", "existingCachedRequest", "existingRequest", "testerOptions", "requestOrOptions", "timeUntilLate", "maxConcurrency", "logOnce", "conditions", "abortableRequests", "abortableRequest", "currentLate", "allForegroundRequests", "timerTolerance", "HTML_FORM_METHODS", "action", "paramsFromQuery", "contentType", "csrfParam", "CONTENT_TYPE_URL_ENCODED", "CONTENT_TYPE_FORM_DATA", "handlers", "xhr", "headerValue", "varyHeaderValue", "header", "FULL_DOCUMENT_PATTERN", "document", "cspNonces", "originSelector", "simplifiedTarget", "matchingElement", "node", "fauxDocument", "head", "selectEvent", "brokenElements", "viewportConfig", "viewportRect", "elementRect", "maxPixels", "originalScrollTop", "newScrollTop", "obstruction", "obstructionRect", "CSS_HAS_SUFFIX_PATTERN", "elementOrDocument", "matchingInExternalDocument", "expandTargetLayer", "expandedTargets", "descendantSelector", "filter", "doScheduleSync", "elementBox", "elementMargin", "anchorBox", "left", "top", "targetLeft", "targetTop", "fullPattern", "positiveList", "negativeList", "capture", "reCode", "doNormalize", "group", "groupIndex", "readyState", "emitReset", "boot", "issue", "supportIssue", "mustBootManually", "unpolyScript", "onEvaled", "startExtension", "stopExtension", "isSupported", "feature", "reset", "globalElement", "on", "buildListenerGroup", "off", "buildEmitter", "emit", "build", "assertEmitted", "onEscape", "keyModifiers", "isUnmodified", "modifier", "isSyntheticClick", "fork", "originalEvent", "newType", "copyKeys", "newEvent", "originalMethod", "executeEmitAttr", "eventProps", "forkedEvent", "inputDevices", "getInputDevice", "observeInputDevice", "newModality", "headerize", "camel", "extractHeader", "shortHeader", "targetFromXHR", "parseModifyCacheValue", "evictCacheFromXHR", "expireCacheFromXHR", "contextFromXHR", "methodFromXHR", "titleFromXHR", "eventPlansFromXHR", "acceptLayerFromXHR", "dismissLayerFromXHR", "initialRequestMethod", "locationFromXHR", "config", "cspNonce", "cspNoncesFromHeader", "cspHeader", "nonces", "noncePattern", "wrapMethod", "printToStandard", "printToStream", "printToWarn", "printToError", "stream", "trace", "printToStreamStyled", "customStyles", "printUserEvent", "color", "printBanner", "logo", "text", "enable", "disable", "SYSTEM_MACRO_PRIORITIES", "registeredCompilers", "registeredMacros", "registerCompiler", "registerProcessor", "registerMacro", "registerAttrCompiler", "valueCallback", "parseProcessorArgs", "detectSystemMacroPriority", "macroSelector", "substr", "processor", "buildProcessor", "insertProcessor", "queue", "newCompiler", "existingCompiler", "compile", "registerDestructor", "hello", "clean", "readData", "buildData", "rawJSON", "parsedJSON", "findAssets", "assertAssetsOK", "newAssets", "oldAssets", "oldHTML", "newHTML", "disableScript", "scriptElement", "disableScriptsInSubtree", "nextPreviousLocation", "trackCurrentLocation", "currentLocation", "isLocation", "replace", "manipulate", "emitLocationChanged", "push", "state", "buildState", "restoreStateOnPop", "onPop", "register", "findMetaTags", "updateMetaTags", "newMetaTags", "oldMetaTags", "oldMetaTag", "newMetaTag", "getLang", "doc", "documentElement", "updateLang", "newLang", "upTagName", "defaultSkipResponse", "sourceOf", "getSmart", "normalizeSource", "timeOf", "etagOf", "render", "parseTargetAndOptions", "navigate", "emitFragmentInserted", "emitFragmentKeep", "newData", "emitFragmentDestroyed", "isNotDestroying", "isAlive", "getDumb", "getAll", "selectorString", "getSubtree", "closest", "destroy", "markFragmentAsDestroying", "reload", "conditionalHeaders", "visit", "KEY_PATTERN", "successKey", "_", "suffix", "toTarget", "tryToTarget", "cannotTarget", "isTargetable", "untargetableMessage", "deriver", "deriveTarget", "isGoodTarget", "deriveTargetFromPattern", "goodClass", "goodClassesForTarget", "matchesPattern", "isGood", "badTargetClass", "MAIN_PSEUDO", "LAYER_PSEUDO", "ORIGIN_PSEUDO", "containsMainPseudo", "expandTargets", "expanded", "mode", "resolveMode", "replaced", "mainTarget", "firstSwappableTarget", "resolveOrigin", "modernResolveOrigin", "splitTarget", "parseTargetSteps", "defaultPlacement", "defaultMaybe", "placement", "maybe", "customPlacement", "hasAutoHistory", "vanillaSelector", "shouldRevalidate", "targetForSteps", "bestSteps", "isContainedByRivalStep", "candidateStep", "rivalStep", "compressNestedSteps", "compressed", "testFnWithAbortable", "onAborted", "unsubscribe", "onFirstIntersect", "processIntersectEntries", "disconnect", "observer", "f", "inputDevice", "bodyShifter", "reveal", "doFocus", "preventScroll", "force", "focusVisible", "removeFocusClasses", "relatedTarget", "tryFocus", "revealHash", "firstHashTarget", "allSelector", "rootSelector", "getAround", "rootWidth", "rootHeight", "isRoot", "rootScrollbarWidth", "scrollTopKey", "fixedElements", "queryParts", "saveScroll", "parseOptions", "tops", "getScrollTopsForSave", "restoreScroll", "locationScrollTops", "setScrollTops", "saveFocus", "restoreFocus", "locationCapsule", "newStateCache", "resetScroll", "absolutize", "originalRect", "boundsRect", "bounds", "moveBounds", "diffX", "diffY", "newElementRect", "pureHash", "focusedElementWithin", "scopeElement", "CURSOR_PROPS", "copyCursorProps", "from", "to", "userScrolled", "namedAnimations", "namedTransitions", "motionController", "pickDefault", "registry", "isEnabled", "animate", "animation", "animationFn", "findAnimationFn", "willRun", "willAnimate", "runNow", "skipAnimate", "animationOrTransition", "applyConfig", "isNone", "animateNow", "findNamedAnimation", "finish", "morph", "transitionObject", "transitionFn", "findTransitionFn", "willMorph", "beforeStart", "afterInsert", "beforeDetach", "afterDetach", "scrollNew", "scrollTopBeforeReveal", "oldRemote", "trackable", "scrollTopAfterReveal", "swapElementsDirectly", "composeTransitionFn", "namedTransition", "oldAnimation", "newAnimation", "oldAnimationFn", "newAnimationFn", "motionOptions", "registerTransition", "transition", "registerAnimation", "registerOpacityAnimation", "translateCSS", "dx", "dy", "noTranslateCSS", "untranslatedBox", "registerMoveAnimations", "direction", "boxToTransform", "animationToName", "animationFromName", "box", "transform", "travelDistance", "_response", "progressBar", "abortRequests", "makeRequest", "parseRequestOptions", "processRequest", "useCachedRequest", "queueRequest", "handleCaching", "expireCache", "evictCache", "hasCacheEntry", "isResponse", "isNetworkError", "isSuccessResponse", "isErrorResponse", "isEmptyResponse", "isBusy", "loadPage", "requestsAttrs", "registerAliasForRedirect", "isSafeMethod", "onLate", "onRecover", "LAYER_CLASSES", "newConfig", "Class", "mainTargets", "modeConfigs", "normalizeLayerOption", "openMethod", "shorthandMode", "setBaseLayerOption", "normalizeOptions", "configs", "handleDeprecatedConfig", "openCallbackAttr", "closeCallbackAttr", "open", "ask", "resolve", "anySelector", "optionToString", "isWithinForeignOverlay", "api", "lastMousedownTarget", "ATTRS_WITH_LOCAL_HTML", "ATTRS_SUGGESTING_FOLLOW", "DEFAULT_INTERACTIVE_ELEMENT", "isPreloadDisabled", "isFollowable", "willCache", "follow", "followOptions", "followURL", "followMethod", "preload", "preloadIssue", "isSafe", "makeFollowable", "makeClickable", "role", "forkEventAsUpClick", "shouldFollowEvent", "betterTargetSelector", "betterTarget", "isInstant", "linkOrDescendant", "isInstantDisabled", "convertClicks", "didUserDragAway", "clickEvent", "forwardedProps", "onLoadCondition", "loadDeferred", "forcedOptions", "area", "childLinkSelector", "childLink", "doPreload", "isField", "findFields", "outsideFieldSelector", "outsideFields", "findSubmitButtons", "submitButtonSelector", "isSubmitButton", "submit", "submitOptions", "getForm", "destinationOptions", "watchOptions", "disableContainer", "focusFallback", "controls", "control", "findGroup", "raiseDisableStack", "lowerDisableStack", "disableWhile", "undoDisable", "handleDisableOption", "missingOption", "getOrigin", "getOriginForm", "getScope", "containers", "submitButton", "watch", "watchCallbackFromElement", "watcher", "rawCallback", "autosubmit", "_diff", "getGroupSelectors", "findGroupSolution", "groupSelector", "goodDerivedGroupTarget", "goodDerivedFieldTarget", "groupHasFieldTarget", "validate", "parseValidateArgs", "originOrTarget", "switcherValues", "groupName", "checkedButton", "switchTargets", "switcher", "targetSelector", "fieldValues", "switchTarget", "findSwitcherForTarget", "hideValues", "parseSwitchTokens", "showValues", "switchers", "elementOrSelector", "focusedField", "isSubmittable", "validatingFieldSelector", "_event", "formOrField", "CLASS_ACTIVE", "CLASS_LOADING", "SELECTOR_LINK", "linkURLs", "updateFragment", "layerLocation", "getMatchableLayerLocation", "navSelector", "navLinkSelector", "links", "isCurrent", "currentClass", "findActivatableArea", "showAroundRequest", "activeElement", "getActiveElementFromRenderOptions", "updateLayerIfLocationChanged", "processedLocation", "onBrowserLocationChanged", "frontLayer", "hungrySteps", "useHungry", "renderLayer", "hungrySelector", "layerPreference", "elementLayer", "hungries", "ifLayer", "applicableLayers", "selectCallback", "startPolling", "stopPolling", "pollOptions", "isRails", "upAttribute", "dataAttribute", "__webpack_module_cache__", "moduleId", "cachedModule", "module", "exports", "environment_default", "modalClosedStyles", "modalOpenedStyles", "element", "options", "environment_default", "event", "toolbarElement", "disallowedActions", "button", "action", "version", "attachmentSelector", "attachments", "attributes", "element", "tagName$1", "_element$tagName", "androidVersionMatch", "androidVersion", "browser$1", "prop", "css$3", "lang$1", "sizes", "file_size_formatting", "number", "base", "exp", "withoutInsignificantZeros", "ZERO_WIDTH_SPACE", "NON_BREAKING_SPACE", "OBJECT_REPLACEMENT_CHARACTER", "extend", "properties", "key", "value", "html", "match", "handleEvent", "eventName", "onElement", "matchingSelector", "withCallback", "inPhase", "preventDefault", "times", "selector", "useCapture", "handler", "event", "target", "findClosestElementFromNode", "handleEventOnce", "options", "triggerEvent", "bubbles", "cancelable", "elementMatchesSelector", "node", "untilNode", "findInnerElement", "_element", "innerElementIsActive", "elementContainsNode", "findChildIndexOfNode", "node", "_node", "childIndex", "removeNode", "_node$parentNode", "walkTree", "tree", "onlyNodesOfType", "usingFilter", "expandEntityReferences", "whatToShow", "tagName", "element", "_element$tagName", "makeElement", "tag", "options", "key", "value", "className", "childNode", "blockTagNames", "getBlockTagNames", "attributes", "attributes$1", "nodeIsBlockContainer", "nodeIsBlockStartComment", "nodeProbablyIsBlockContainer", "nodeIsBlockStart", "strict", "nodeIsCommentNode", "nodeIsCursorTarget", "name", "nodeIsTextNode", "ZERO_WIDTH_SPACE", "nodeIsAttachmentElement", "elementMatchesSelector", "attachmentSelector", "nodeIsEmptyTextNode", "input", "browser$1", "callback", "key_names", "parser", "text_attributes", "style", "matchingSelector", "link", "toolbar", "lang$1", "undo", "config", "attachments", "css$3", "file_size_formatting", "BasicObject", "expression", "toMethod", "toProperty", "optional", "parseProxyMethodExpression", "subject", "object", "_this$toMethod", "_object", "apply", "match", "proxyMethodExpressionPattern", "args", "_Array$from", "_$codePointAt$1", "_$1", "_String$fromCodePoint", "UTF16String", "ucs2String", "ucs2decode", "codepoints", "ucs2encode", "offset", "ucs2Offset", "hasArrayFrom", "hasStringCodePointAt$1", "hasStringFromCodePoint", "string", "char", "output", "counter", "length", "extra", "array", "result", "id$2", "TrixObject", "jsonString", "parts", "contents", "arraysAreEqual", "a", "b", "index", "arrayStartsWith", "spliceArray", "_len", "_key", "summarizeArrayChange", "oldArray", "newArray", "added", "removed", "existingValues", "currentValues", "RTL_PATTERN", "getDirection", "textArea", "form", "supportsDirName", "supportsDirSelector", "allAttributeNames", "blockAttributeNames", "textAttributeNames", "listAttributeNames", "getAllAttributeNames", "getTextAttributeNames", "getBlockAttributeNames", "getBlockConfig", "attributeName", "getTextConfig", "getListAttributeNames", "listAttribute", "installDefaultCSSForTagName", "defaultCSS", "styleElement", "insertStyleElementForTagName", "nonce", "getCSPNonce", "getMetaElement", "testTransferData", "dataTransferIsPlainText", "dataTransfer", "text", "html", "body", "dataTransferIsMsOfficePaste", "_ref", "dataTransferIsWritable", "keyEventIsKeyboardCommand", "event", "defer", "fn", "copyObject", "objectsAreEqual", "normalizeRange", "range", "copyValue", "rangeIsCollapsed", "start", "end", "rangeValuesAreEqual", "rangesAreEqual", "leftRange", "rightRange", "leftStart", "leftEnd", "rightStart", "rightEnd", "left", "right", "SelectionChangeObserver", "selectionManager", "sm", "selectionChangeObserver", "getDOMSelection", "selection", "getDOMRange", "_getDOMSelection", "domRange", "domRangeIsPrivate", "setDOMRange", "nodeIsPrivate", "normalizeSpaces", "NON_BREAKING_SPACE", "normalizeNewlines", "breakableWhitespacePattern", "squishBreakableWhitespace", "summarizeStringChange", "oldString", "newString", "utf16StringDifferences", "diffA", "utf16StringDifference", "diffB", "leftIndex", "rightIndexA", "rightIndexB", "Hash", "_Hash", "objects", "hash", "box", "keys", "values", "copy", "merge", "unbox", "keyToRemove", "ObjectGroup", "ungroupedObjects", "depth", "asTree", "group", "_object$canBeGrouped2", "_object$canBeGrouped", "_group$canBeGroupedWi", "_group", "ObjectMap", "ElementStore", "elements", "getKey", "Operation", "resolve", "reject", "succeeded", "_this$promise", "_this$promise$cancel", "ObjectView", "_this$parentView", "_this$findViewForObje", "viewClass", "view", "ObjectGroupView", "views", "childView", "id", "_this$getViewCache", "cache", "objectKeys", "DEFAULT_ALLOWED_ATTRIBUTES", "DEFAULT_FORBIDDEN_PROTOCOLS", "DEFAULT_FORBIDDEN_ELEMENTS", "HTMLSanitizer", "sanitizedElement", "sanitizedHtml", "sanitizer", "allowedAttributes", "forbiddenProtocols", "forbiddenElements", "createBodyElementForHTML", "walker", "nodesToRemove", "listElement", "previousElement", "doc", "css$2", "AttachmentView", "innerElement", "figure", "href", "createCursorTarget", "figcaption", "caption", "size", "captionConfig", "nameElement", "sizeElement", "names", "extension", "data", "htmlContainsTagName", "_config$attachments$t", "type", "_this$findElement", "progressElement", "div", "PreviewableAttachmentView", "image", "url", "previewURL", "serializedAttributes", "width", "height", "storeKey", "PieceView", "nodes", "findInnerElement", "constructor", "_this$textConfig", "iterable", "substring", "styles", "pendingElement", "TextView", "pieces", "lastIndex", "piece", "context", "endsWithWhitespace", "previousPiece", "css$1", "BlockView", "_getBlockConfig", "textConfig", "textView", "htmlAttributes", "DocumentView", "document", "elementsHaveEqualHTML", "fragment", "findStoredElements", "storedElement", "otherElement", "ignoreSpaces", "_AsyncGenerator", "e", "r", "resume", "t", "n", "o", "u", "_OverloadYield", "i", "settle", "_defineProperty", "obj", "key", "value", "_toPropertyKey", "_toPrimitive", "input", "hint", "prim", "res", "_toPropertyKey", "arg", "key", "Piece", "TrixObject", "type", "constructor", "pieceJSON", "value", "attributes", "Hash", "attribute", "piece", "_defineProperty", "ImagePreloadOperation", "Operation", "url", "callback", "image", "Attachment", "_Attachment", "file", "attachment", "attachmentJSON", "newAttributes", "_this$previewDelegate", "_this$previewDelegate2", "_this$delegate", "_this$delegate$attach", "filesize", "file_size_formatting", "_this$getFilename$mat", "_this$uploadProgressD", "_this$uploadProgressD2", "_this$previewDelegate3", "_this$previewDelegate4", "_this$delegate2", "_this$delegate2$attac", "_ref", "width", "height", "AttachmentPiece", "_AttachmentPiece", "_piece$attachment", "OBJECT_REPLACEMENT_CHARACTER", "json", "StringPiece", "string", "normalizeNewlines", "result", "offset", "left", "right", "SplittableList", "objects", "object", "_len", "args", "_key", "spliceArray", "index", "splittableList", "position", "range", "leftIndex", "rightIndex", "test", "transform", "transformedObjects", "rightOuterIndex", "leftInnerIndex", "startOfRange", "endOfRange", "splitIndex", "splitOffset", "leftObject", "rightObject", "pendingObject", "_pendingObject$canBeC", "_pendingObject", "startIndex", "endIndex", "objectsInRange", "consolidatedInRange", "currentPosition", "nextPosition", "currentIndex", "objectArraysAreEqual", "Text", "textJSON", "pieces", "notEmpty", "pieceList", "objectMap", "text", "length", "_this$pieceList$getOb", "attributeName", "attachmentId", "attachmentAndPosition", "_text$pieceList", "getDirection", "Block", "_Block", "blockJSON", "htmlAttributes", "applyBlockBreakToText", "block", "arraysAreEqual", "objectsAreEqual", "mappedText", "expandAttribute", "listAttribute", "getBlockConfig", "removeLastValue", "getLastElement", "level", "_getBlockConfig", "_getBlockConfig2", "_getBlockConfig3", "direction", "newlineText", "textEndsInBlockBreak", "depth", "otherBlock", "otherAttributes", "otherAttribute", "getListAttributeNames", "unmarkExistingInnerBlockBreaksInText", "addBlockBreakToText", "modified", "innerPieces", "lastPiece", "unmarkBlockBreakPiece", "blockBreakText", "array", "Document", "documentJSON", "blocks", "textAttributes", "sourceDocument", "ObjectMap", "blockAttributes", "oldBlock", "newBlock", "document", "blockList", "normalizeRange", "rangeIsCollapsed", "formattedDocument", "startPosition", "startLocation", "baseBlockAttributes", "trailingBlockAttributes", "leadingBlockAttributes", "blockCount", "firstBlock", "firstText", "leftPosition", "rightPosition", "leftLocation", "rightLocation", "leftOffset", "leftBlock", "rightOffset", "rightBlock", "leftText", "rightText", "affectedBlockCount", "endPosition", "movingRightward", "textRange", "name", "updatedBlock", "expanded", "blockConfig", "converted", "options", "lastAttributeName", "endLocation", "startBlock", "endBlock", "match", "_this$getBlockAtIndex", "attributesForBlock", "key", "commonAttributes", "attributesLeft", "inheritableAttributes", "text_attributes", "startOffset", "endOffset", "start", "end", "blockIndex", "lastAttributeIndex", "attachmentPieces", "iterable", "ranges", "withValue", "location", "locationRange", "pieceForString", "normalizeSpaces", "pieceForAttachment", "blockForAttributes", "parseTrixDataAttribute", "element", "getImageDimensions", "dimensions", "HTMLParser", "BasicObject", "html", "parser", "referenceElement", "HTMLSanitizer", "walker", "walkTree", "nodeFilter", "makeElement", "removeNode", "node", "_this$currentBlock", "elementIsBlockElement", "currentBlockContainsElement", "elementContainsNode", "parentBlockElement", "parentElement", "elementCanDisplayPreformattedText", "_node$previousSibling", "squishBreakableWhitespace", "stringEndsWithWhitespace", "leftTrimBreakableWhitespace", "nodeIsAttachmentElement", "tagName", "configAttr", "findClosestElementFromNode", "attributeInheritedFromBlock", "blockElement", "attributes$1", "attrConfig", "_attrConfig$test", "settings", "ancestors", "tag", "getBlockTagNames", "stringIsAllBreakableWhitespace", "parentNode", "previousSibling", "nextSibling", "nodeEndsWithNonWhitespace", "_element$previousSibl", "content", "defaultMargin", "margin", "getBlockElementMargin", "whiteSpace", "style", "breakableWhitespacePattern", "unserializableElementSelector", "unserializableAttributeNames", "serializedAttributesAttribute", "serializedAttributesSelector", "blockCommentPattern", "serializers", "serializable", "DocumentView", "el", "serializeToContentType", "serializable", "contentType", "serializer", "serializers", "core", "ManagedAttachment", "BasicObject", "attachmentManager", "attachment", "AttachmentManager", "attachments", "result", "id", "_this$delegate", "_this$delegate$attach", "managedAttachment", "LineBreakInsertion", "composition", "selectedRange", "PLACEHOLDER", "Composition", "Document", "document", "_this$delegate$compos", "_ref", "_this$delegate2", "_this$delegate2$compo", "_this$delegate3", "_this$delegate3$compo", "text", "updatePosition", "startPosition", "endPosition", "block", "Block", "string", "options", "attributes", "Text", "insertion", "html", "HTMLParser", "locationRange", "file", "files", "_this$delegate4", "Attachment", "attachments$1", "_config$attachments$t", "type", "presentation", "attachmentText", "direction", "rangeIsCollapsed", "length", "deletingIntoPreviousBlock", "selectionSpansBlocks", "range", "selectionIsCollapsed", "position", "attributeName", "value", "getBlockConfig", "_getBlockConfig", "allowedHTMLAttributes", "newDocument", "_this$getBlock", "_getBlockConfig2", "previousBlock", "arrayStartsWith", "_this$getBlock2", "_this$getBlock3", "attribute", "index", "endIndex", "attributeLevel", "currentAttributes", "getAllAttributeNames", "objectsAreEqual", "extend", "key", "getTextConfig", "_this$delegate5", "normalizeRange", "fn", "domRange", "canEditAttachment", "rangesAreEqual", "_this$getSelectedAtta", "location", "_this$document$getPie", "_this$getSelectedDocu", "added", "removed", "summarizeArrayChange", "_this$delegate6", "_this$delegate6$compo", "_this$delegate7", "_this$delegate7$compo", "_this$delegate8", "_this$delegate8$compo", "_this$delegate9", "_this$delegate9$compo", "_this$delegate10", "_this$delegate10$comp", "_this$delegate11", "_this$delegate11$comp", "OBJECT_REPLACEMENT_CHARACTER", "_this$delegate12", "_this$delegate12$comp", "_this$delegate13", "_this$delegate13$comp", "offset", "utf16string", "utf16position", "UndoManager", "description", "context", "consolidatable", "previousEntry", "entryHasDescriptionAndContext", "undoEntry", "redoEntry", "entry", "BLOCK_ATTRIBUTE_NAME", "TEXT_ATTRIBUTE_NAME", "TEXT_ATTRIBUTE_VALUE", "Filter", "snapshot", "attachmentGalleryFilter", "filter", "DEFAULT_FILTERS", "Editor", "selectionManager", "element", "name", "LocationMapper", "container", "strict", "childIndex", "foundBlock", "attachmentElement", "findChildIndexOfNode", "walker", "walkTree", "rejectAttachmentContents", "node", "nodeIsTextNode", "nodeIsCursorTarget", "elementContainsNode", "nodeIsBlockStart", "nodeLength", "nodeIsBlockContainer", "nodeOffset", "currentNode", "nodeIsAttachmentElement", "nodes", "acceptSignificantNodes", "recordingNodes", "nodeIsBlockStartComment", "blockIndex", "tagName", "rejectEmptyTextNodes", "nodeIsEmptyTextNode", "PointMapper", "x", "y", "offsetNode", "originalDOMRange", "getDOMRange", "textRange", "setDOMRange", "array", "start", "end", "SelectionManager", "handleEvent", "pointRange", "startLocation", "endLocation", "lockedLocationRange", "_getDOMSelection", "getDOMSelection", "_getDOMRange", "resumeHandlers", "resume", "resumeTimeout", "handler", "eventName", "innerElementIsActive", "_this$delegate$locati", "rangeStart", "rangeEnd", "point", "_this$createLocationR", "models", "AttachmentPiece", "HTMLSanitizer", "Piece", "SplittableList", "StringPiece", "views", "ObjectView", "AttachmentView", "BlockView", "DocumentView", "PieceView", "PreviewableAttachmentView", "TextView", "lang", "css", "keyNames$1", "config", "undoable", "commands", "AttachmentEditorController", "attachmentPiece", "_element", "_defineProperty", "makeElement", "triggerEvent", "removeNode", "textarea", "textareaClone", "autoresize", "figcaption", "editingFigcaption", "defer", "undo", "caption", "_this$delegate2$attac", "_this$delegate3$attac", "event", "_this$delegate5$attac", "CompositionController", "attachmentSelector", "_this$blurPromise", "perform", "resolve", "target", "editCaption", "findClosestElementFromNode", "_this$delegate4$compo", "_this$delegate5$compo", "object", "_this$attachmentEdito", "_this$attachmentEdito2", "Controller", "mutableAttributeName", "mutableSelector", "MutationObserver", "mutations", "_this$delegate$elemen", "mutation", "additions", "deletions", "textChanges", "addition", "summary", "deleted", "textAdded", "textRemoved", "addedNodes", "removedNodes", "getTextForNodes", "normalizeSpaces", "characterMutations", "startMutation", "endMutation", "oldString", "newString", "summarized", "summarizeStringChange", "FileVerificationOperation", "Operation", "callback", "reader", "FlakyAndroidKeyboardDetector", "browser$1", "differsInWhitespace", "_this$event$data", "_this$previousEvent", "_this$previousEvent2", "text1", "text2", "normalize", "whiteSpaceNormalizerRegexp", "ZERO_WIDTH_SPACE", "NON_BREAKING_SPACE", "InputController", "mutationSummary", "_this$delegate$inputC", "_this$delegate2$input", "operations", "_this$responder", "href", "link", "_$codePointAt", "_", "browser", "keyNames", "pastedFileCount", "Level0InputController", "selectionChangeObserver", "textDeleted", "mutationAdditionMatchesSummary", "mutationDeletionMatchesSummary", "unexpectedNewlineAddition", "unexpectedNewlineDeletion", "_this$compositionInpu", "textChanged", "composedEmptyString", "CompositionInput", "_this$responder2", "dataTransfer", "_this$responder3", "dataTransferIsWritable", "types", "style", "keyName", "_context2", "modifier", "_context", "keyEventIsKeyboardCommand", "character", "keys", "stringFromKeyEvent", "_this$responder9", "data", "_this$responder10", "_this$delegate5$input", "draggingPoint", "_this$delegate6$input", "_this$delegate7$input", "_event$dataTransfer", "_this$responder11", "documentJSON", "_this$responder12", "_this$responder13", "_this$responder14", "_this$responder15", "clipboard", "paste", "pasteEventIsCrippledSafariHTMLPaste", "_this$responder16", "_this$responder17", "squishBreakableWhitespace", "dataTransferIsPlainText", "_this$delegate14", "_this$responder18", "_this$delegate15", "_this$delegate16", "_this$responder19", "_this$delegate17", "_clipboard$items", "_clipboard$items$getA", "_this$delegate18", "_this$responder20", "_this$delegate19", "extension", "extensionForFile", "_this$delegate20", "_this$delegate21", "_this$delegate22", "_this$responder21", "_this$responder22", "_this$responder23", "_this$responder24", "_this$responder25", "_this$delegate23", "_this$delegate24", "_this$delegate25", "_this$responder26", "_this$delegate26", "_this$responder27", "_this$responder28", "_this$responder29", "_this$delegate27", "_this$delegate28", "_file$type", "hasStringCodePointAt", "code", "UTF16String", "hasPasteboardFlavor", "hasReadableDynamicData", "isExternalHTMLPaste", "isExternalRichTextPaste", "inputController", "_this$responder5", "_this$responder4", "_this$responder6", "_this$responder7", "_this$responder8", "_this$data$start", "_this$data$end", "Level2InputController", "_this$afterRender", "recordUndoEntry", "_this$event$getTarget", "_this$event", "minLength", "targetRanges", "staticRangeToRange", "command", "keyboardCommandFromKeyEvent", "_event$clipboardData", "pasteEventHasFilesOnly", "pasteEventHasPlainTextOnly", "pointFromEvent", "dragEventHasFiles", "_this$responder30", "_this$responder31", "_this$responder32", "_this$responder33", "processableFilePaste", "_this$responder34", "_this$responder35", "_this$responder36", "replacement", "_this$event$dataTrans", "staticRange", "_event$dataTransfer$f", "dataTransferIsMsOfficePaste", "attributeButtonSelector", "actionButtonSelector", "toolbarButtonSelector", "dialogSelector", "activeDialogSelector", "dialogButtonSelector", "dialogInputSelector", "getInputForDialog", "getAttributeName", "getActionName", "getDialogName", "ToolbarController", "actionName", "dialogElement", "method", "dialog", "actions", "keyString", "button", "buttonKeys", "dialogName", "disabledInput", "input", "snapshotsAreEqual", "a", "b", "EditorController", "editorElement", "invokingElement", "_this$actions$actionN", "_this$actions$actionN2", "currentActions", "serializeToContentType", "message", "blockConfig", "_len", "_key", "_this$editorElement$o", "controllers", "observers", "SelectionChangeObserver", "ImagePreloadOperation", "installDefaultCSSForTagName", "TrixToolbarElement", "toolbar", "autofocus", "makeEditable", "handleEventOnce", "configureContentEditable", "disableObjectResizing", "setDefaultParagraphSeparator", "_document$queryComman", "_document", "_document$queryComman2", "_document2", "addAccessibilityRole", "ensureAriaLabel", "update", "label", "cursorTargetStyles", "TrixEditorElement", "labels", "_this$ownerDocument", "toolbarId", "_this$inputElement", "_this$ownerDocument2", "inputId", "_this$editorControlle", "_this$inputElement2", "_this$inputElement3", "defaultValue", "_this$editor", "_this$editorControlle2", "elements", "filters", "Trix", "version", "sparkMd5", "module", "exports", "factory", "undefined$1", "hex_chr", "md5cycle", "x", "k", "a", "b", "c", "d", "md5blk", "s", "md5blks", "i", "md5blk_array", "md51", "n", "state", "length", "tail", "tmp", "lo", "hi", "md51_array", "rhex", "j", "hex", "clamp", "val", "from", "to", "begin", "end", "num", "target", "targetArray", "sourceArray", "toUtf8", "str", "utf8Str2ArrayBuffer", "returnUInt8Array", "buff", "arr", "arrayBuffer2Utf8Str", "concatenateArrayBuffers", "first", "second", "result", "hexToBinaryString", "bytes", "SparkMD5", "contents", "raw", "ret", "content", "hash", "fileSlice", "FileChecksum", "_FileChecksum", "file", "callback", "event", "binaryDigest", "base64digest", "start", "getMetaValue", "name", "element", "findElement", "findElements", "root", "selector", "elements", "toArray", "dispatchEvent", "type", "eventInit", "disabled", "bubbles", "cancelable", "detail", "value", "BlobRecord", "checksum", "url", "customHeaders", "headerKey", "csrfToken", "responseType", "response", "direct_upload", "key", "BlobUpload", "blob", "headers", "status", "id", "DirectUpload", "delegate", "error", "notify", "upload", "object", "methodName", "messages", "DirectUploadController", "input", "hiddenInput", "attributes", "progress", "xhr", "inputSelector", "DirectUploadsController", "form", "controllers", "startNextController", "controller", "processingAttribute", "submitButtonsByForm", "started", "didClick", "didSubmitForm", "didSubmitRemoteElement", "button", "handleFormSubmissionEvent", "inputs", "disable", "enable", "submitForm", "autostart", "captureSubmit", "submitEvent", "captureEvent", "start", "t", "e", "i", "s", "n", "r", "o", "h", "a", "e", "t", "i", "s", "n", "r", "o", "a", "h", "_h", "l", "d", "c", "u", "p", "m", "g", "f", "v", "b", "_u", "AudioPlayer", "_AudioPlayer", "container", "src", "onPlay", "onPause", "onStop", "styles", "primaryColor", "currentColor", "waveSurfer", "u", "time", "rate", "percent", "seconds", "formatSecondsAsTime", "totalSeconds", "seconds", "v", "formatMillisecondsAsTime", "milliseconds", "element", "src", "playButton", "pauseButton", "waveform", "time", "player", "init", "AudioPlayer", "onLoading", "onUpdateTime", "reset", "initializePlayer", "_", "setState", "destroyPlayer", "state", "percent", "milliseconds", "formatMillisecondsAsTime", "module2", "t", "i", "e", "s", "o", "r", "n", "d", "a", "i", "t", "e", "s", "o", "r", "_r", "n", "a", "d", "AudioRecorder", "audioPlayer", "onRecord", "onPause", "onProgress", "onStop", "recorder", "r", "milliseconds", "args", "state", "expectedDeviceKind", "device", "Duration", "_Duration", "seconds", "locale", "humanizer", "number", "unit", "formatOptions", "element", "confirmRemove", "maxSeconds", "audioPlayerElement", "recordButton", "pauseButton", "removeButton", "fileField", "form", "intersectionObserver", "onIntersectionChange", "maxMilliseconds", "recorder", "submitPending", "init", "initializeRecorder", "_", "onClickRemove", "onBeforeSubmit", "playerInstance", "AudioRecorder", "onRecord", "onPause", "onProgress", "onStop", "setState", "destroyRecorder", "reset", "AudioPlayer", "state", "beforeSubmitEvent", "milliseconds", "handleMaxMillisecondsExceeded", "durationHtml", "Duration", "blob", "attachRecordingToInputField", "submitAgain", "dataTransfer", "file", "module4", "Application", "configKey", "data", "config", "Configuration", "key", "value", "application_default", "Timeout", "callback", "microseconds", "percent", "config", "application_default", "element", "keepOpen", "indicator", "closeButton", "updateIndicator", "percent", "removeTimer", "environment_default", "removeAutomatically", "remove", "updateIndicatorInterval", "removeDelay", "Timeout", "module6", "module7", "module8", "module9", "module0", "module1", "element", "confirmed", "unsavedChanges", "poppedState", "requestConfirmation", "onConfirm", "onCancel", "markConfirmed", "onChange", "onSubmit", "needsConfirmation", "isUnsavedFormInsideCurrentLayer", "onLinkFollow", "event", "target", "renderOptions", "renderTarget", "renderLayer", "_", "onDismissLayer", "onBack", "onUnload", "environment_default", "onPopstate", "state", "appleIphone", "appleIpod", "appleTablet", "appleUniversal", "androidPhone", "androidTablet", "amazonPhone", "amazonTablet", "windowsPhone", "windowsTablet", "otherBlackBerry", "otherBlackBerry10", "otherOpera", "otherChrome", "otherFirefox", "isAppleTabletOnIos13", "navigator", "createMatch", "userAgent", "regex", "isMobile", "param", "nav", "tmp", "match", "result", "HOOKS", "defaults", "err", "givenDate", "date", "week1", "english", "nth", "s", "default_default", "pad", "number", "length", "int", "bool", "debounce", "fn", "wait", "_this", "args", "arrayify", "obj", "toggleClass", "elem", "className", "bool", "createElement", "tag", "content", "e", "clearNode", "node", "findParent", "condition", "createNumberInput", "inputClassName", "opts", "wrapper", "numInput", "arrowUp", "arrowDown", "key", "getEventTarget", "event", "path", "doNothing", "monthToStr", "monthNumber", "shorthand", "locale", "revFormat", "dateObj", "monthName", "hour", "day", "amPM", "int", "shortMonth", "seconds", "_", "unixSeconds", "weekNum", "weekNumber", "date", "year", "ISODate", "minutes", "month", "unixMillSeconds", "tokenRegex", "formats", "options", "pad", "createDateFormatter", "_a", "_b", "config", "defaults", "_c", "l10n", "english", "_d", "isMobile", "dateObj", "frmt", "overrideLocale", "locale", "c", "i", "arr", "formats", "createDateParser", "date", "givenFormat", "timeless", "customLocale", "parsedDate", "dateOrig", "format", "datestr", "matched", "ops", "matchIndex", "regexStr", "token", "isBackSlash", "escaped", "tokenRegex", "match", "revFormat", "fn", "val", "compareDates", "date1", "date2", "isBetween", "ts", "ts1", "ts2", "calculateSecondsSinceMidnight", "hours", "minutes", "seconds", "parseSeconds", "secondsSinceMidnight", "duration", "getDefaultHours", "config", "minHour", "minMinutes", "minSeconds", "maxHr", "maxMinutes", "target", "args", "_i", "_loop_1", "source", "key", "_a", "args_1", "__assign", "t", "s", "i", "n", "p", "__spreadArrays", "il", "r", "k", "a", "j", "jl", "DEBOUNCED_CHANGE_MS", "FlatpickrInstance", "element", "instanceConfig", "self", "defaults", "flatpickr", "default_default", "createDateParser", "bind", "setHoursFromDate", "positionCalendar", "changeMonth", "changeYear", "clear", "close", "onMouseOver", "createElement", "createDay", "destroy", "isEnabled", "jumpToDate", "updateValue", "open", "redraw", "set", "setDate", "toggle", "setupHelperFunctions", "month", "yr", "init", "parseConfig", "setupLocale", "setupInputs", "setupDates", "build", "bindEvents", "setCalendarWidth", "isSafari", "triggerEvent", "getClosestActiveElement", "_a", "bindToInstance", "fn", "config", "daysWidth", "updateTime", "defaultDate", "compareDates", "getDefaultHours", "timeWrapper", "prevValue", "setHoursFromInputs", "ampm2military", "hour", "amPM", "int", "military2ampm", "hours", "minutes", "seconds", "limitMinHours", "limitMaxHours", "minBound", "calculateSecondsSinceMidnight", "maxBound", "currentTime", "result", "parseSeconds", "maxTime", "minTime", "setHours", "dateObj", "date", "pad", "onYearInput", "event", "eventTarget", "getEventTarget", "year", "handler", "options", "ev", "el", "triggerChange", "evt", "setupMobile", "debouncedResize", "debounce", "onResize", "e", "onKeyDown", "documentClick", "onMonthNavClick", "selectDate", "selText", "timeIncrement", "onBlur", "jumpDate", "jumpTo", "oldYear", "oldMonth", "buildMonthSwitch", "incrementNumInput", "delta", "inputElem", "target", "input", "createEvent", "fragment", "buildMonthNav", "buildWeeks", "weekWrapper", "weekNumbers", "buildWeekdays", "buildDays", "buildTime", "toggleClass", "customAppend", "wrapper", "className", "_dayNumber", "dateIsEnabled", "dayElement", "isDateSelected", "isDateInRange", "focusOnDayElem", "targetNode", "getFirstAvailableDay", "startMonth", "endMonth", "m", "startIndex", "endIndex", "c", "getNextAvailableDay", "current", "givenMonth", "loopDelta", "numMonthDays", "focusOnDay", "offset", "activeElement", "dayFocused", "isInView", "startElem", "buildMonthDays", "firstOfMonth", "prevMonthDays", "daysInMonth", "days", "isMultiMonth", "prevMonthDayClass", "nextMonthDayClass", "dayNumber", "dayIndex", "dayNum", "dayContainer", "clearNode", "frag", "d", "shouldBuildMonth", "monthToStr", "buildMonth", "container", "monthNavFragment", "monthElement", "selectedMonth", "yearInput", "createNumberInput", "yearElement", "currentMonth", "buildMonths", "bool", "updateNavigationCurrentMonth", "separator", "hourInput", "minuteInput", "secondInput", "updateWeekdays", "firstDayOfWeek", "weekdays", "value", "isOffset", "triggerChangeEvent", "toInitial", "isCalendarElem", "elem", "eventTarget_1", "isCalendarElement", "isInput", "lostFocus", "isIgnored", "newYear", "newYearNum", "isNewYear", "timeless", "dateToCheck", "array", "parsed", "valueChanged", "getDateStr", "allowInput", "allowKeydown", "allowInlineKeydown", "isTimeObj", "focusAndClose", "delta_1", "elems", "x", "cellClass", "hoverDate", "initialDate", "rangeStartDate", "rangeEndDate", "containsDisabled", "minRange", "maxRange", "duration", "hoverableCells", "dayElem", "timestamp", "outOfRange", "isBetween", "positionElement", "wasOpen", "minMaxDateSetter", "type", "inverseDateObj", "boolOpts", "userConfig", "formats", "dates", "parseDateRules", "timeMode", "defaultDateFormat", "defaultAltFormat", "minMaxTimeSetter", "val", "HOOKS", "hook", "arrayify", "pluginConf", "key", "getInputElem", "tokenRegex", "createDateFormatter", "customPositionElement", "calendarHeight", "acc", "child", "calendarWidth", "configPos", "configPosVertical", "configPosHorizontal", "inputBounds", "distanceFromBottom", "showOnTop", "top", "left", "isCenter", "isRight", "right", "rightMost", "centerMost", "doc", "getDocumentStyleSheet", "bodyWidth", "centerLeft", "centerBefore", "centerAfter", "centerIndex", "centerStyle", "editableSheet", "sheet", "createStyleSheet", "style", "isSelectable", "day", "findParent", "selectedDate", "shouldChangeMonth", "selectedIndex", "b", "single", "range", "CALLBACKS", "updatePositionElement", "option", "setSelectedDate", "inputDate", "format", "arr", "rule", "preloadedDate", "inputType", "data", "hooks", "name", "specificFormat", "dObj", "isPrevMonth", "isNextMonth", "isKeyDown", "min", "max", "step", "curValue", "newValue", "isHourElem", "isMinuteElem", "_flatpickr", "nodeList", "nodes", "instances", "node", "selector", "l10n", "esm_default", "import_de", "element", "previousMonthIcon", "nextMonthIcon", "isMobile", "labels", "picker", "esm_default", "altInput", "label", "module4", "module5", "TimeAgo", "time", "value", "unit", "element", "timestamp", "highlightFrom", "time", "highlightTime", "update", "timeAgo", "TimeAgo", "getRefreshDelay", "updateInterval", "module7", "e", "t", "o", "r", "n", "i", "a", "l", "s", "d", "u", "c", "v", "autosize_esm_default", "insertAtCaret", "textarea", "newText", "caretStart", "caretEnd", "originalText", "leadingText", "trailingText", "autosize_esm_default", "element", "templatesPath", "textarea", "opener", "onClickOpener", "value", "insertAtCaret", "element", "autosize_esm_default", "updateSizeTimeout"] }