{"version":3,"file":"js/3460-65d0e10e3367e53b4916.js","mappings":"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","sources":["webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/ajax_modals.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/autocomplete.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/clipboard.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/data_picker.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/form_datepicker.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/delayed.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/check_boxes_tree.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/form_filter.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/foundation-datepicker/js/locales/foundation-datepicker.lb.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/gallery.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/input_hashtags.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/input_mentions.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/session_timeouter.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/vendor/foundation-datepicker.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/vendor/tribute.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/vizzs/index.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/vizzs/areachart.js"],"sourcesContent":["$(() => {\n $(document).on(\"click\", \"a[data-open-url],button[data-open-url]\", (event) => {\n event.preventDefault();\n const link = event.currentTarget;\n const $modal = $(`#${link.dataset.open}`);\n $modal.html(\"
\");\n $.ajax({\n type: \"get\",\n url: link.dataset.openUrl,\n success: (html) => {\n const $html = $(html);\n $modal.html($html);\n $html.foundation();\n },\n error: function (request, status, error) {\n $modal.html(`

${status}

${error}

`);\n }\n });\n });\n});\n","/* eslint max-lines: [\"error\", 350] */\n\nimport AutoCompleteJS from \"@tarekraafat/autocomplete.js\";\n\nexport default class AutoComplete {\n constructor(el, options = {}) {\n this.element = el;\n this.stickySelectedSpan = null;\n this.clearStickySelectionSpan = null;\n this.stickyHiddenInput = null;\n this.promptDiv = null;\n const thresholdTemp = options.threshold || 2;\n this.options = Object.assign({\n // Defines name of the hidden input (e.g. assembly_member[user_id])\n name: null,\n // Placeholder of the visible input field\n placeholder: \"\",\n // Defines what happens after user has selected value from suggestions\n // sticky - Allows selecting a single value and not editing the value after selected (e.g. as the admin autocomplete fields)\n // single - Allows selecting a single value and editing the selected text after the selection (e.g. geocoding field)\n // multi - Allows selecting multiple values\n // null (default) - Disable selection event handling in this class\n mode: null,\n // Defines if we show input help (e.g. \"Type at least three characters to search\") or not.\n searchPrompt: false,\n // Defines search prompt message, only shown if showPrompt is enabled!\n searchPromptText: `Type at least ${thresholdTemp} characters to search`,\n // Defines items that are selected already when page is loaded before user selects them. (e.g. when form submit fails)\n selected: null,\n // Defines how many characters input has to have before we start searching\n threshold: thresholdTemp,\n // Defines how many results to show in the autocomplete selection list\n // by maximum.\n maxResults: 10,\n // Defines the data keys against which to match the user input when\n // searching through the results. For example, when the following\n // data is returned by the API:\n // { id: 123, name: \"John\", nickname: \"john\", __typename: \"User\" }\n //\n // You can define the data keys array as [\"name\", \"nickname\"] in\n // which case the results shown to user would be only those that\n // have matching text in these defined fields.\n dataMatchKeys: null,\n // The data source is a method that gets the callback parameter as\n // its first argument which should be called with the results array\n // once they are returned by the API.\n // For example:\n // (query, callback) => {\n // (async () => {\n // const results = await callAjax(`/api/url?query=${query}`);\n // callback(results);\n // })();\n // }\n //\n // Signature: (callback: Function)\n dataSource: () => [],\n // Filters the data list returned by the data source before it is shown\n // to the user. Can be used e.g. to hide already selected values from\n // the list.\n dataFilter: null,\n // Delay in milliseconds how long to wait after user action before\n // doing a backend request.\n delay: 200,\n // Allows modifying the suggested items before they are displayed in the list\n // Signature: (element: HTMLElement, value: Object)\n modifyResult: null\n }, options);\n\n this.autocomplete = new AutoCompleteJS({\n selector: () => this.element,\n diacritics: true,\n placeHolder: options.placeholder,\n // Delay (milliseconds) before autocomplete engine starts. It's preventing many queries when user is typing fast.\n debounce: 200,\n threshold: this.options.threshold,\n data: {\n keys: this.options.dataMatchKeys,\n src: async (query) => {\n const fetchResults = () => {\n return new Promise((resolve) => {\n this.options.dataSource(query, resolve);\n });\n }\n\n try {\n return await fetchResults();\n } catch (error) {\n return error;\n }\n },\n filter: (list) => {\n const results = list.filter(\n (item, idx, arr) => {\n return arr.findIndex((val) => val.value === item.value) === idx;\n }\n );\n\n if (this.options.dataFilter) {\n return this.options.dataFilter(results);\n }\n\n return results;\n }\n },\n resultsList: {\n maxResults: this.options.maxResults\n },\n resultItem: {\n element: (item, data) => {\n if (!this.options.modifyResult) {\n return;\n }\n\n this.options.modifyResult(item, data.value);\n }\n },\n events: {\n input: {\n blur: () => {\n this.promptDiv.style.display = \"none\";\n }\n }\n }\n });\n\n this.acWrapper = this.element.closest(\".autoComplete_wrapper\");\n this.element.ac = this.autocomplete;\n\n // Stop input field from bubbling open and close events to parent elements,\n // because foundation closes modal from these events.\n const stopPropagation = (event) => {\n event.stopPropagation();\n }\n this.element.addEventListener(\"close\", stopPropagation);\n this.element.addEventListener(\"open\", stopPropagation);\n\n this.createPromptDiv();\n\n switch (this.options.mode) {\n case \"sticky\":\n this.createStickySelect(this.options.name);\n break;\n case \"multi\":\n this.createMultiSelect(this.options.name);\n break;\n default:\n }\n }\n\n setInput(value) {\n this.autocomplete.input.value = value;\n }\n\n handleEvent(event) {\n switch (this.options.mode) {\n case \"single\":\n this.setInput(event.detail.selection.value[event.detail.selection.key]);\n break;\n case \"sticky\":\n this.handleStickyEvents(event);\n break;\n case \"multi\":\n this.handleMultiEvents(event);\n break;\n default:\n }\n }\n\n handleMultiEvents(event) {\n switch (event.type) {\n case \"selection\":\n this.addMultiSelectItem(event.detail.selection);\n break;\n default:\n }\n }\n\n handleStickyEvents(event) {\n switch (event.type) {\n case \"selection\":\n this.addStickySelectItem(event.detail.selection);\n break;\n case \"click\":\n if (event.target === this.clearStickySelectionSpan) {\n this.removeStickySelection();\n }\n break;\n case \"keyup\":\n if (this.stickyHiddenInput.value !== \"\" && event.target === this.element && ([\"Escape\", \"Backspace\", \"Delete\"].includes(event.key) || (/^[a-z0-9]$/i).test(event.key))) {\n this.removeStickySelection();\n } else if (this.options.searchPrompt) {\n if (this.stickyHiddenInput.value === \"\" && this.element.value.length < this.options.threshold) {\n this.promptDiv.style.display = \"block\";\n } else {\n this.promptDiv.style.display = \"none\";\n }\n }\n break;\n default:\n }\n }\n\n createHiddenInput(value) {\n const hiddenInput = document.createElement(\"input\");\n hiddenInput.name = this.options.name;\n hiddenInput.type = \"hidden\";\n if (value) {\n hiddenInput.value = value;\n }\n this.acWrapper.prepend(hiddenInput);\n return hiddenInput;\n }\n\n removeStickySelection() {\n this.stickyHiddenInput.value = \"\";\n this.element.placeholder = this.options.placeholder;\n this.clearStickySelectionSpan.style.display = \"none\";\n this.stickySelectedSpan.style.display = \"none\";\n }\n\n addStickySelectItem(selection) {\n this.stickyHiddenInput.value = selection.value.value;\n this.element.placeholder = \"\";\n this.stickySelectedSpan.innerHTML = selection.value[selection.key];\n this.stickySelectedSpan.style.display = \"block\";\n this.clearStickySelectionSpan.style.display = \"block\";\n this.setInput(\"\");\n }\n\n addMultiSelectItem(selection) {\n this.setInput(\"\");\n const chosen = document.createElement(\"span\");\n chosen.classList.add(\"label\", \"primary\", \"autocomplete__selected-item\", \"multi\");\n chosen.innerHTML = selection.value[selection.key];\n const clearSelection = document.createElement(\"span\");\n clearSelection.classList.add(\"clear-multi-selection\");\n clearSelection.innerHTML = \"×\";\n clearSelection.setAttribute(\"data-remove\", selection.value.value);\n clearSelection.addEventListener(\"click\", (evt) => {\n const hiddenInput = this.acWrapper.querySelector(`input[type='hidden'][value='${selection.value.value}']`);\n if (hiddenInput) {\n hiddenInput.remove();\n evt.target.parentElement.remove();\n }\n });\n chosen.appendChild(clearSelection);\n\n const multiSelectWrapper = this.acWrapper.querySelector(\".multiselect\");\n const inputContainer = multiSelectWrapper.querySelector(\"span.input-container\");\n multiSelectWrapper.insertBefore(chosen, inputContainer);\n this.createHiddenInput(selection.value.value);\n }\n\n createStickySelect() {\n this.stickySelectedSpan = document.createElement(\"span\");\n this.stickySelectedSpan.classList.add(\"autocomplete__selected-item\", \"sticky\");\n this.stickySelectedSpan.style.display = \"none\";\n this.stickySelectedSpan.addEventListener(\"click\", () => this.element.focus());\n this.stickyHiddenInput = this.createHiddenInput();\n\n this.clearStickySelectionSpan = document.createElement(\"span\");\n this.clearStickySelectionSpan.className = \"clear-sticky-selection\";\n this.clearStickySelectionSpan.innerHTML = \"×\";\n this.clearStickySelectionSpan.style.display = \"none\";\n this.clearStickySelectionSpan.addEventListener(\"click\", this);\n\n this.element.addEventListener(\"selection\", this);\n this.element.addEventListener(\"keyup\", this);\n\n this.acWrapper.insertBefore(this.clearStickySelectionSpan, this.element);\n this.acWrapper.insertBefore(this.stickySelectedSpan, this.element);\n if (this.options.selected) {\n this.addStickySelectItem(this.options.selected);\n }\n }\n\n createMultiSelect() {\n const multiSelectWrapper = document.createElement(\"div\");\n multiSelectWrapper.classList.add(\"multiselect\");\n\n const inputContainer = document.createElement(\"span\");\n inputContainer.classList.add(\"input-container\");\n\n multiSelectWrapper.appendChild(inputContainer);\n this.acWrapper.prepend(multiSelectWrapper);\n inputContainer.appendChild(this.element);\n\n this.element.addEventListener(\"selection\", this);\n multiSelectWrapper.addEventListener(\"click\", () => {\n this.element.focus();\n })\n\n if (this.options.selected) {\n this.options.selected.forEach((selection) => {\n this.addMultiSelectItem(selection);\n })\n }\n }\n\n createPromptDiv() {\n this.promptDiv = document.createElement(\"div\");\n this.promptDiv.classList.add(\"search-prompt\");\n this.promptDiv.style.display = \"none\";\n this.promptDiv.innerHTML = this.options.searchPromptText;\n this.acWrapper.appendChild(this.promptDiv);\n }\n}\n","import select from \"select\";\n\n/**\n * This script provides clipboard copy functionality to elements like buttons and links.\n * The element to be copied from must be specified using a `data` attribute, and the\n * target element can be a form input, textarea, or any other HTML element containing text.\n *\n * Usage:\n * 1. Create the copy trigger element (button or link):\n * \n * OR\n * \n * <%= icon \"clipboard\", role: \"presentation\", \"aria-hidden\": true %>\n * Copy link\n * \n *\n * 2. Ensure the target element exists on the page:\n * \n * OR\n * \n * OR\n *
This text will be copied.
\n *\n * Options through data attributes:\n * - `data-clipboard-copy` = The jQuery selector for the target element (input, textarea, or any HTML element)\n * from which text will be copied. If this element does not contain any visible text\n * (for example, an image), this selector will be used to place the confirmation message.\n * - `data-clipboard-content` = The specific text that will be copied. If this attribute is empty or not provided,\n * the inner text or value of the target input/element will be used instead.\n * - `data-clipboard-copy-label` = The temporary label that will be shown in the copy trigger element\n * (button or link) after a successful copy operation.\n * - `data-clipboard-copy-message` = The text message that will be announced to screen readers after a successful copy.\n *\n * The script supports:\n * - Copying text from an input or textarea using a selection.\n * - Copying text from any other element by grabbing its inner text.\n * - Temporarily changing the label of the copy button or target element to indicate success.\n * - Announcing success messages to screen readers.\n *\n * Note: If the target is an input or textarea, it will not replace its value with the success label;\n * the success label appears in the button or link text only.\n */\n\nconst CLIPBOARD_COPY_TIMEOUT = 5000;\n\nconst getSelectedText = ($el, $input) => {\n // Get the text to be copied. If 'data-clipboard-content' is not specified,\n // use the content of the target element.\n let selectedText = $el.data(\"clipboard-content\") || \"\";\n\n if (selectedText === \"\" && $input.length > 0) {\n if ($input.is(\"input, textarea, select\")) {\n // If the target is an input, textarea, or select, use select library to get text.\n selectedText = select($input[0]);\n } else {\n // If the target is any other element, use its text.\n selectedText = $input.text();\n }\n }\n\n return selectedText;\n};\n\nconst performCopy = (selectedText, $el) => {\n // Move the selected text to clipboard.\n const $temp = $(``).css({\n width: 1,\n height: 1\n });\n $el.after($temp);\n $temp.select();\n\n const copyDone = () => {\n $temp.remove();\n $el.focus();\n };\n\n try {\n if (!document.execCommand(\"copy\")) {\n return false;\n }\n } catch (err) {\n copyDone();\n return false;\n }\n\n copyDone();\n return true;\n};\n\nconst updateLabel = ($el, $input, label) => {\n if (label) {\n let to = $el.data(\"clipboard-copy-label-timeout\");\n if (to) {\n clearTimeout(to);\n }\n\n if (!$el.data(\"clipboard-copy-label-original\")) {\n $el.data(\"clipboard-copy-label-original\", $el.html());\n }\n\n // Temporarily change the element's text\n $el.html(label);\n\n // Restore the original text after a timeout\n to = setTimeout(() => {\n $el.html($el.data(\"clipboard-copy-label-original\"));\n $el.removeData(\"clipboard-copy-label-original\");\n $el.removeData(\"clipboard-copy-label-timeout\");\n }, CLIPBOARD_COPY_TIMEOUT);\n\n $el.data(\"clipboard-copy-label-timeout\", to);\n }\n};\n\nconst announceToScreenReader = ($el, message) => {\n let announcementMessage = message;\n\n if (announcementMessage) {\n let $msg = $el.data(\"clipboard-message-element\");\n if ($msg) {\n if ($msg.html() === message) {\n // Try to hint the screen reader to re-read the text in the message element.\n announcementMessage += \" \";\n }\n } else {\n $msg = $('
');\n $el.after($msg);\n $el.data(\"clipboard-message-element\", $msg);\n }\n\n // Add the non-breaking space always to content to try to force the screen reader to reannounce the added text.\n $msg.html(announcementMessage);\n }\n};\n\n$(() => {\n $(document).on(\"click\", \"[data-clipboard-copy]\", (ev) => {\n const $el = $(ev.currentTarget);\n\n if (!$el.data(\"clipboard-copy\") || $el.data(\"clipboard-copy\").length < 1) {\n return;\n }\n\n const $input = $($el.data(\"clipboard-copy\"));\n\n const selectedText = getSelectedText($el, $input);\n\n if (!selectedText || selectedText.length < 1) {\n return;\n }\n\n const copySuccess = performCopy(selectedText, $el);\n\n if (!copySuccess) {\n return;\n }\n\n const label = $el.data(\"clipboard-copy-label\");\n\n if ($el.is(\"button\")) {\n updateLabel($el, $el, label);\n } else if ($el.is(\"a\") && $input.length > 0) {\n updateLabel($input, $input, label);\n }\n\n const message = $el.data(\"clipboard-copy-message\");\n announceToScreenReader($el, message);\n });\n});\n","export default class DataPicker {\n constructor(pickers) {\n this.modal = this._createModalContainer();\n this.modal.appendTo($(\"body\"));\n this.current = null;\n\n pickers.each((_index, picker) => {\n this.activate(picker);\n });\n }\n\n activate(picker) {\n let $picker = $(picker);\n\n this._setCurrentPicker($picker, null);\n\n let input = \"hidden\",\n name = this.current.name,\n values = this.current.values;\n\n if (this.current.multiple) {\n name += \"[]\";\n }\n\n $(\"div\", values).each((_index2, div) => {\n let value = $(\"a\", div).data(\"picker-value\");\n $(div).prepend($(``));\n });\n\n $picker.on(\"click\", \"a\", (event) => {\n event.preventDefault();\n if ($picker.hasClass(\"disabled\")) {\n return;\n }\n const isMultiPicker = $picker.hasClass(\"picker-multiple\");\n\n if ($(this._targetFromEvent(event)).hasClass(\"picker-prompt\") || !isMultiPicker) {\n this._openPicker($picker, this._targetFromEvent(event));\n } else if (this._targetFromEvent(event).tagName === \"A\") {\n this._removeValue($picker, this._targetFromEvent(event).parentNode);\n } else {\n this._removeValue($picker, this._targetFromEvent(event));\n }\n });\n\n $picker.on(\"click\", \"input\", (event) => {\n this._removeValue($picker, this._targetFromEvent(event));\n });\n\n if (this.current.autosort) {\n this._sort();\n }\n }\n\n enabled(picker, value) {\n $(picker).toggleClass(\"disabled\", !value);\n $(\"input\", picker).attr(\"disabled\", !value);\n }\n\n clear(picker) {\n $(\".picker-values\", picker).html(\"\");\n }\n\n save(picker) {\n return $(\".picker-values div:has(input:checked)\", picker).map((_index, div) => {\n let $link = $(\"a\", div);\n return {\n value: $(\"input\", div).val(),\n text: $link.text(),\n url: $link.attr(\"href\")\n };\n }).get();\n }\n\n load(picker, savedData) {\n this._setCurrentPicker($(picker), null);\n $.each(savedData, (_index, data) => {\n this._choose(data, { interactive: false, modify: false });\n });\n if (this.current.autosort) {\n this._sort();\n }\n }\n\n _createModalContainer() {\n // Add a header because we are referencing the title element with\n // `aria-labelledby`. If the title doesn't exist, the \"labelled by\"\n // reference is incorrect.\n const headerHtml = '
';\n\n return $(`
\n
${headerHtml}
\n \n
`);\n }\n\n _openPicker($picker, target) {\n this._setCurrentPicker($picker, target);\n this._load($(\"a\", target).attr(\"href\"));\n }\n\n _setCurrentPicker($picker, target) {\n let $target = false;\n if (target && !$(target).hasClass(\"picker-prompt\")) {\n $target = $(target);\n }\n\n this.current = {\n picker: $picker,\n name: $picker.data(\"picker-name\"),\n values: $picker.find(\".picker-values\"),\n multiple: $picker.hasClass(\"picker-multiple\"),\n autosort: $picker.hasClass(\"picker-multiple\") && $picker.hasClass(\"picker-autosort\"),\n target: $target\n };\n }\n\n _load(url) {\n $.ajax(url).done((resp) => {\n let modalContent = $(\".data_picker-modal-content\", this.modal);\n modalContent.html(resp);\n this._handleLinks(modalContent);\n this._handleCheckboxes(modalContent);\n this.modal.foundation(\"open\");\n });\n }\n\n _handleLinks(content) {\n $(\"a\", content).each((_index, link) => {\n let $link = $(link);\n $link.click((event) => {\n event.preventDefault();\n if ($link.data(\"close\") || $link.data(\"close\") === \"\") {\n return;\n }\n\n let chooseUrl = $link.attr(\"href\");\n if (chooseUrl) {\n if (typeof $link.data(\"picker-choose\") === \"undefined\") {\n this._load(chooseUrl);\n } else {\n this._choose(\n { url: chooseUrl, value: $link.data(\"picker-value\") || \"\", text: $link.data(\"picker-text\") || \"\" }\n );\n }\n }\n });\n });\n }\n\n _handleCheckboxes(content) {\n $(\"input[type=checkbox][data-picker-choose]\", content).each((_index, checkbox) => {\n const $checkbox = $(checkbox);\n checkbox.checked = this._targetFromValue($checkbox.val()) !== null;\n }).change((event) => {\n const $checkbox = $(event.target);\n if (event.target.checked) {\n this._choose(\n { url: $checkbox.data(\"picker-url\"), value: $checkbox.val() || \"\", text: $checkbox.data(\"picker-text\") || \"\" },\n { modify: false, close: false }\n );\n }\n else {\n this._removeValue(this.current.picker, this._targetFromValue($checkbox.val()));\n }\n });\n }\n\n _choose(data, opts = {}) {\n const options = Object.assign({ interactive: true, modify: true, close: true }, opts);\n\n let dataText = this._escape(data.text);\n let choosenOption = null;\n\n if (!this.current.target && options.modify) {\n this.current.target = this._targetFromValue(data.value);\n }\n\n // Add or update value appearance\n if (this.current.target && options.modify) {\n let link = $(\"a\", this.current.target);\n link.data(\"picker-value\", data.value);\n link.attr(\"href\", data.url);\n choosenOption = this.current.target;\n if (this.current.multiple) {\n link.html(`× ${dataText}`);\n } else {\n link.text(dataText);\n }\n } else {\n let input = \"hidden\",\n name = this.current.name;\n\n if (this.current.multiple) {\n name += \"[]\";\n choosenOption = $(`
× ${dataText}
`);\n } else {\n choosenOption = $(`
${dataText}
`);\n }\n choosenOption.appendTo(this.current.values);\n\n if (!this.current.target) {\n this.current.target = choosenOption;\n }\n }\n\n // Set input value\n let $input = $(\"input\", choosenOption);\n $input.attr(\"value\", data.value);\n\n if (this.current.autosort) {\n this._sort();\n }\n\n if (options.interactive) {\n // Raise changed event\n $input.trigger(\"change\");\n this._removeErrors();\n\n if (options.close) {\n this._close();\n }\n }\n }\n\n _sort() {\n const values = $(\".picker-values\", this.current.picker);\n values.children().sort((item1, item2) => $(\"input\", item1).val() - $(\"input\", item2).val()).detach().appendTo(values);\n }\n\n _close() {\n // Close modal and unset target element\n this.modal.foundation(\"close\");\n this.current.target = null;\n }\n\n _removeValue($picker, target) {\n if (target) {\n this._setCurrentPicker($picker, target);\n // Fadeout (with time) doesn't work in system tests\n let fadeoutTime = 500;\n if (navigator && navigator.webdriver) {\n fadeoutTime = 0;\n }\n this.current.target.fadeOut(fadeoutTime, () => {\n this.current.target.find(\"input\")?.trigger(\"change\");\n this.current.target.remove();\n this.current.target = null;\n });\n }\n }\n\n _removeErrors() {\n let parent = this.current.picker.parent();\n $(\".is-invalid-input\", parent).removeClass(\"is-invalid-input\");\n $(\".is-invalid-label\", parent).removeClass(\"is-invalid-label\");\n $(\".form-error.is-visible\", parent).removeClass(\"is-visible\");\n }\n\n _escape(str) {\n return str.replace(/[\\u00A0-\\u9999<>&]/gim, function (char) {\n return `&#${char.charCodeAt(0)};`;\n });\n }\n\n _targetFromEvent(event) {\n return event.target.parentNode;\n }\n\n _targetFromValue(value) {\n return $(`[data-picker-value=${value}]`, this.current.picker).parent()[0] || null;\n }\n}\n","/* eslint-disable require-jsdoc */\n\nexport default function formDatePicker() {\n $(\"[data-datepicker]\").each((_index, node) => {\n const language = $(\"html\").attr(\"lang\") || \"en\";\n const initialDate = $(node).data(\"startdate\") || \"\";\n const pickTime = $(node).data(\"timepicker\") === \"\";\n const languageProps = $(node).fdatepicker.dates[language] && $(node).fdatepicker.dates[language].format;\n let format = $(node).data(\"date-format\") || languageProps || \"mm/dd/yyyy\";\n\n $(node).fdatepicker({\n format,\n initialDate,\n language,\n pickTime,\n disableDblClickSelection: true,\n leftArrow: \"<<\",\n rightArrow: \">>\"\n });\n });\n}\n","/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds.\n * @param {Object} context - the context for the called function.\n * @param {Function} func - the function to be executed.\n * @param {int} wait - number of milliseconds to wait before executing the function.\n * @private\n * @returns {Void} - Returns nothing.\n */\nexport default function delayed(context, func, wait) {\n let timeout = null;\n\n return function(...args) {\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n timeout = null;\n Reflect.apply(func, context, args);\n }, wait);\n }\n}\n","/**\n * CheckBoxesTree component.\n */\nexport default class CheckBoxesTree {\n constructor() {\n this.checkboxesTree = document.querySelectorAll(\"[data-checkboxes-tree]\");\n if (!this.checkboxesTree) {\n return;\n }\n\n this.globalChecks = document.querySelectorAll(\"[data-global-checkbox] input\");\n this.globalChecks.forEach((global) => {\n if (global.value === \"\") {\n global.classList.add(\"ignore-filter\")\n }\n });\n this.checkGlobalCheck();\n\n // Event listeners\n this.checkboxesTree.forEach((input) => input.addEventListener(\"click\", (event) => this.checkTheCheckBoxes(event.target)));\n document.querySelectorAll(\"[data-children-checkbox] input\").forEach((input) => {\n input.addEventListener(\"change\", (event) => this.checkTheCheckParent(event.target));\n });\n\n // Review parent checkboxes on initial load\n document.querySelectorAll(\"[data-children-checkbox] input\").forEach((input) => {\n this.checkTheCheckParent(input);\n });\n }\n\n /**\n * Set checkboxes as checked if included in given values\n * @public\n * @param {Array} checkboxes - array of checkboxs to check\n * @param {Array} values - values of checkboxes that should be checked\n * @returns {Void} - Returns nothing.\n */\n updateChecked(checkboxes, values) {\n checkboxes.each((index, checkbox) => {\n if ((checkbox.value === \"\" && values.length === 1) || (checkbox.value !== \"\" && values.includes(checkbox.value))) {\n checkbox.checked = true;\n this.checkTheCheckBoxes(checkbox);\n this.checkTheCheckParent(checkbox);\n }\n });\n }\n\n /**\n * Set the container form(s) for the component, to disable ignored filters before submitting them\n * @public\n * @param {query} theForm - form or forms where the component will be used\n * @returns {Void} - Returns nothing.\n */\n setContainerForm(theForm) {\n theForm.on(\"submit ajax:before\", () => {\n theForm.find(\".ignore-filters input, input.ignore-filter\").each((idx, elem) => {\n elem.disabled = true;\n });\n });\n\n theForm.on(\"ajax:send\", () => {\n theForm.find(\".ignore-filters input, input.ignore-filter\").each((idx, elem) => {\n elem.disabled = false;\n });\n });\n }\n\n /**\n * Handles the click action on any checkbox.\n * @private\n * @param {Input} target - the input that has been checked\n * @returns {Void} - Returns nothing.\n */\n checkTheCheckBoxes(target) {\n // Quis custodiet ipsos custodes?\n const targetChecks = target.dataset.checkboxesTree;\n const checkStatus = target.checked;\n const allChecks = document.querySelectorAll(`#${targetChecks} input[type='checkbox']`);\n\n allChecks.forEach((input) => {\n input.checked = checkStatus;\n input.indeterminate = false;\n input.classList.add(\"ignore-filter\");\n });\n }\n\n /**\n * Update global checkboxes state when the current selection changes\n * @private\n * @returns {Void} - Returns nothing.\n */\n checkGlobalCheck() {\n this.globalChecks.forEach((global) => {\n const checksContext = global.dataset.checkboxesTree;\n const totalInputs = document.querySelectorAll(\n `#${checksContext} input[type='checkbox']`\n );\n const checkedInputs = document.querySelectorAll(\n `#${checksContext} input[type='checkbox']:checked`\n );\n const indeterminateInputs = Array.from(totalInputs).filter((checkbox) => checkbox.indeterminate)\n\n if (checkedInputs.length === 0 && indeterminateInputs.length === 0) {\n global.checked = false;\n global.indeterminate = false;\n } else if (checkedInputs.length === totalInputs.length && indeterminateInputs.length === 0) {\n global.checked = true;\n global.indeterminate = false;\n } else {\n global.checked = true;\n global.indeterminate = true;\n }\n\n totalInputs.forEach((input) => {\n if (global.indeterminate && !input.indeterminate) {\n input.classList.remove(\"ignore-filter\");\n } else {\n input.classList.add(\"ignore-filter\");\n }\n const subfilters = input.parentNode.parentNode.nextElementSibling;\n if (subfilters && subfilters.classList.contains(\"filters__subfilters\")) {\n if (input.indeterminate) {\n subfilters.classList.remove(\"ignore-filters\");\n } else {\n subfilters.classList.add(\"ignore-filters\");\n }\n }\n });\n });\n }\n\n /**\n * Update children checkboxes state when the current selection changes\n * @private\n * @param {Input} input - the checkbox to check its parent\n * @returns {Void} - Returns nothing.\n */\n checkTheCheckParent(input) {\n const checkBoxContext = $(input).parents(\".filters__subfilters\").attr(\"id\");\n if (!checkBoxContext) {\n this.checkGlobalCheck();\n return;\n }\n\n const parentCheck = document.querySelector(\n `[data-checkboxes-tree=${checkBoxContext}]`\n );\n const totalCheckSiblings = document.querySelectorAll(\n `#${checkBoxContext} > div > [data-children-checkbox] > input, #${checkBoxContext} > [data-children-checkbox] > input`\n );\n const checkedSiblings = document.querySelectorAll(\n `#${checkBoxContext} > div > [data-children-checkbox] > input:checked, #${checkBoxContext} > [data-children-checkbox] > input:checked`\n );\n const indeterminateSiblings = Array.from(totalCheckSiblings).filter((checkbox) => checkbox.indeterminate)\n\n if (checkedSiblings.length === 0 && indeterminateSiblings.length === 0) {\n parentCheck.checked = false;\n parentCheck.indeterminate = false;\n } else if (checkedSiblings.length === totalCheckSiblings.length && indeterminateSiblings.length === 0) {\n parentCheck.checked = true;\n parentCheck.indeterminate = false;\n } else {\n parentCheck.checked = true;\n parentCheck.indeterminate = true;\n }\n\n totalCheckSiblings.forEach((sibling) => {\n if (parent.indeterminate && !sibling.indeterminate) {\n sibling.classList.remove(\"ignore-filter\");\n } else {\n sibling.classList.add(\"ignore-filter\");\n }\n const subfilters = sibling.parentNode.parentNode.nextElementSibling;\n if (subfilters && subfilters.classList.contains(\"filters__subfilters\")) {\n if (sibling.indeterminate) {\n subfilters.classList.remove(\"ignore-filters\");\n } else {\n subfilters.classList.add(\"ignore-filters\");\n }\n }\n });\n\n this.checkTheCheckParent(parentCheck);\n }\n}\n","/* eslint-disable no-div-regex, no-useless-escape, no-param-reassign, id-length */\n/* eslint max-lines: [\"error\", {\"max\": 350, \"skipBlankLines\": true}] */\n\n/**\n * A plain Javascript component that handles the form filter.\n * @class\n * @augments Component\n */\n\nimport delayed from \"src/decidim/delayed\"\nimport CheckBoxesTree from \"src/decidim/check_boxes_tree\"\nimport { registerCallback, unregisterCallback, pushState, replaceState, state } from \"src/decidim/history\"\nimport DataPicker from \"src/decidim/data_picker\"\n\nexport default class FormFilterComponent {\n constructor($form) {\n this.$form = $form;\n this.id = this.$form.attr(\"id\") || this._getUID();\n this.mounted = false;\n this.changeEvents = true;\n this.theCheckBoxesTree = new CheckBoxesTree();\n this.theDataPicker = window.theDataPicker || new DataPicker($(\".data-picker\"));\n\n this._updateInitialState();\n this._onFormChange = delayed(this, this._onFormChange.bind(this));\n this._onFormSubmit = delayed(this, this._onFormSubmit.bind(this));\n this._onPopState = this._onPopState.bind(this);\n\n if (window.Decidim.PopStateHandler) {\n this.popStateSubmiter = false;\n } else {\n this.popStateSubmiter = true;\n window.Decidim.PopStateHandler = this.id;\n }\n }\n\n /**\n * Handles the logic for unmounting the component\n * @public\n * @returns {Void} - Returns nothing\n */\n unmountComponent() {\n if (this.mounted) {\n this.mounted = false;\n this.$form.off(\"change\", \"input, select\", this._onFormChange);\n this.$form.off(\"submit\", this._onFormSubmit);\n\n unregisterCallback(`filters-${this.id}`)\n }\n }\n\n /**\n * Handles the logic for mounting the component\n * @public\n * @returns {Void} - Returns nothing\n */\n mountComponent() {\n if (this.$form.length > 0 && !this.mounted) {\n this.mounted = true;\n let queue = 0;\n\n let contentContainer = $(this.$form.closest(\".filters\").parent().find(\".skip\").attr(\"href\"));\n if (contentContainer.length === 0 && this.$form.data(\"remoteFill\")) {\n contentContainer = this.$form.data(\"remoteFill\");\n }\n this.$form.on(\"change\", \"input:not([data-disable-dynamic-change]), select:not([data-disable-dynamic-change])\", this._onFormChange);\n this.$form.on(\"submit\", this._onFormSubmit);\n\n this.currentFormRequest = null;\n this.$form.on(\"ajax:beforeSend\", (e) => {\n if (this.currentFormRequest) {\n this.currentFormRequest.abort();\n }\n this.currentFormRequest = e.originalEvent.detail[0];\n queue += 1;\n if (queue > 0 && contentContainer.length > 0 && !contentContainer.hasClass(\"spinner-container\")) {\n contentContainer.addClass(\"spinner-container\");\n }\n });\n\n this.$form.on(\"ajax:success\", () => {\n queue -= 1;\n if (queue <= 0 && contentContainer.length > 0) {\n contentContainer.removeClass(\"spinner-container\");\n }\n });\n\n this.$form.on(\"ajax:error\", () => {\n queue -= 1;\n if (queue <= 0 && contentContainer.length > 0) {\n contentContainer.removeClass(\"spinner-container\");\n }\n this.$form.find(\".spinner-container\").addClass(\"hide\");\n });\n\n this.theCheckBoxesTree.setContainerForm(this.$form);\n\n registerCallback(`filters-${this.id}`, (currentState) => {\n this._onPopState(currentState);\n });\n }\n }\n\n /**\n * Sets path in the browser history with the initial filters state, to allow to restoring it when using browser history.\n * @private\n * @returns {Void} - Returns nothing.\n */\n _updateInitialState() {\n const [initialPath, initialState] = this._currentStateAndPath();\n initialState._path = initialPath\n replaceState(null, initialState);\n }\n\n /**\n * Finds the current location.\n * @param {boolean} withHost - include the host part in the returned location\n * @private\n * @returns {String} - Returns the current location.\n */\n _getLocation(withHost = true) {\n const currentState = state();\n let path = \"\";\n\n if (currentState && currentState._path) {\n path = currentState._path;\n } else {\n path = window.location.pathname + window.location.search + window.location.hash;\n }\n\n if (withHost) {\n return window.location.origin + path;\n }\n return path;\n }\n\n /**\n * Parse current location and get filter values.\n * @private\n * @returns {Object} - An object where a key correspond to a filter field\n * and the value is the current value for the filter.\n */\n _parseLocationFilterValues() {\n // Every location param is constructed like this: filter[key]=value\n let regexpResult = decodeURIComponent(this._getLocation()).match(/filter\\[([^\\]]*)\\](?:\\[\\])?=([^&]*)/g);\n\n // The RegExp g flag returns null or an array of coincidences. It doesn't return the match groups\n if (regexpResult) {\n const filterParams = regexpResult.reduce((acc, result) => {\n const [, key, array, value] = result.match(/filter\\[([^\\]]*)\\](\\[\\])?=([^&]*)/);\n if (array) {\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(value);\n } else {\n acc[key] = value;\n }\n return acc;\n }, {});\n\n return filterParams;\n }\n\n return null;\n }\n\n /**\n * Parse current location and get the current order.\n * @private\n * @returns {string} - The current order\n */\n _parseLocationOrderValue() {\n const url = this._getLocation();\n const match = url.match(/order=([^&]*)/);\n const $orderMenu = this.$form.find(\".order-by .menu\");\n let order = $orderMenu.find(\".menu a:first\").data(\"order\");\n\n if (match) {\n order = match[1];\n }\n\n return order;\n }\n\n /**\n * Clears the form to start with a clean state.\n * @private\n * @returns {Void} - Returns nothing.\n */\n _clearForm() {\n this.$form.find(\"input[type=checkbox]\").each((index, element) => {\n element.checked = element.indeterminate = false;\n });\n this.$form.find(\"input[type=radio]\").attr(\"checked\", false);\n this.$form.find(\".data-picker\").each((_index, picker) => {\n this.theDataPicker.clear(picker);\n });\n\n // This ensure the form is reset in a valid state where a fieldset of\n // radio buttons has the first selected.\n this.$form.find(\"fieldset input[type=radio]:first\").each(function () {\n // I need the this to iterate a jQuery collection\n $(this)[0].checked = true; // eslint-disable-line no-invalid-this\n });\n }\n\n /**\n * Handles the logic when going back to a previous state in the filter form.\n * @private\n * @param {Object} currentState - state stored along with location URL\n * @returns {Void} - Returns nothing.\n */\n _onPopState(currentState) {\n this.changeEvents = false;\n this._clearForm();\n\n const filterParams = this._parseLocationFilterValues();\n const currentOrder = this._parseLocationOrderValue();\n\n this.$form.find(\"input.order_filter\").val(currentOrder);\n\n if (filterParams) {\n const fieldIds = Object.keys(filterParams);\n\n // Iterate the filter params and set the correct form values\n fieldIds.forEach((fieldName) => {\n let value = filterParams[fieldName];\n\n if (Array.isArray(value)) {\n let checkboxes = this.$form.find(`input[type=checkbox][name=\"filter[${fieldName}][]\"]`);\n this.theCheckBoxesTree.updateChecked(checkboxes, value);\n } else {\n this.$form.find(`*[name=\"filter[${fieldName}]\"]`).each((index, element) => {\n switch (element.type) {\n case \"hidden\":\n break;\n case \"radio\":\n case \"checkbox\":\n element.checked = value === element.value;\n break;\n default:\n element.value = value;\n }\n });\n }\n });\n }\n\n // Retrieves picker information for selected values (value, text and link) from the state object\n $(\".data-picker\", this.$form).each((_index, picker) => {\n let pickerState = currentState[picker.id];\n if (pickerState) {\n this.theDataPicker.load(picker, pickerState);\n }\n })\n\n // Only one instance should submit the form on browser history navigation\n if (this.popStateSubmiter) {\n Rails.fire(this.$form[0], \"submit\", { from: \"pop\" });\n }\n\n this.changeEvents = true;\n }\n\n /**\n * Handles the logic to decide whether the form should be submitted or not\n * after a form change event. The form is only submitted when changes have\n * occurred.\n * @private\n * @returns {Void} - Returns nothing.\n */\n _onFormChange() {\n if (!this.changeEvents) {\n return;\n }\n\n const [newPath] = this._currentStateAndPath();\n const path = this._getLocation(false);\n\n if (newPath === path) {\n return;\n }\n\n Rails.fire(this.$form[0], \"submit\");\n }\n\n /**\n * Saves the current state of the search on form submit to update the search\n * parameters to the URL and store the picker states.\n * @private\n * @param {jQuery.Event} ev The event that caused the form to submit.\n * @returns {Void} - Returns nothing.\n */\n _onFormSubmit(ev) {\n const eventDetail = ev.originalEvent.detail;\n if (eventDetail && eventDetail.from === \"pop\") {\n return;\n }\n\n const [newPath, newState] = this._currentStateAndPath();\n\n pushState(newPath, newState);\n this._saveFilters(newPath);\n }\n\n /**\n * Calculates the path and the state associated to the filters inputs.\n * @private\n * @returns {Array} - Returns an array with the path and the state for the current filters state.\n */\n _currentStateAndPath() {\n const formAction = this.$form.attr(\"action\");\n const params = this.$form.find(\":not(.ignore-filters)\").find(\"select:not(.ignore-filter), input:not(.ignore-filter)\").serialize();\n\n let path = \"\";\n let currentState = {};\n\n if (formAction.indexOf(\"?\") < 0) {\n path = `${formAction}?${params}`;\n } else {\n path = `${formAction}&${params}`;\n }\n\n // Stores picker information for selected values (value, text and link) in the currentState object\n $(\".data-picker\", this.$form).each((_index, picker) => {\n currentState[picker.id] = this.theDataPicker.save(picker);\n })\n\n return [path, currentState];\n }\n\n /**\n * Generates a unique identifier for the form.\n * @private\n * @returns {String} - Returns a unique identifier\n */\n _getUID() {\n return `filter-form-${new Date().getUTCMilliseconds()}-${Math.floor(Math.random() * 10000000)}`;\n }\n\n /**\n * Saves the changed filters on sessionStorage API.\n * @private\n * @param {string} pathWithQueryStrings - path with all the query strings for filter. To be used with backToListLink().\n * @returns {Void} - Returns nothing.\n */\n _saveFilters(pathWithQueryStrings) {\n if (!window.sessionStorage) {\n return;\n }\n\n const pathName = this.$form.attr(\"action\");\n sessionStorage.setItem(\"filteredParams\", JSON.stringify({[pathName]: pathWithQueryStrings}));\n }\n\n}\n","/**\n * Luxembourgish localisation\n */\n;(function(jQuery) {\n jQuery.fn.fdatepicker.dates.lb = {\n days: [\"Sonndeg\", \"Méindeg\", \"Dënschdeg\", \"Mëttwoch\", \"Donneschdeg\", \"Freideg\", \"Samschdeg\", \"Sonndeg\"],\n daysShort: [\"Son\", \"Méi\", \"Dën\", \"Mët\", \"Don\", \"Fre\", \"Sam\", \"Son\"],\n daysMin: [\"So\", \"Mé\", \"Dë\", \"Më\", \"Do\", \"Fr\", \"Sa\", \"So\"],\n months: [\"Januar\", \"Februar\", \"Mäerz\", \"Abrëll\", \"Mee\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\n monthsShort: [\"Jan\", \"Febr\", \"Mrz\", \"Abr\", \"Mee\", \"Jun\", \"Jul\", \"Aug\", \"Sept\", \"Okt\", \"Nov\", \"Dez\"],\n today: \"Haut\"\n };\n}(jQuery));\n","$(() => {\n $(\".gallery__container\").on(\"closed.zf.callout\", (event) => {\n $(event.target).remove();\n });\n});\n","/* eslint no-unused-vars: 0 */\nimport Tribute from \"src/decidim/vendor/tribute\"\n\n$(() => {\n const $hashtagContainer = $(\".js-hashtags\");\n const nodatafound = $hashtagContainer.attr(\"data-noresults\");\n\n let noMatchTemplate = null\n if (nodatafound) {\n noMatchTemplate = () => `
  • ${nodatafound}
  • `;\n }\n\n // Listener for the event triggered by quilljs\n let cursor = \"\";\n $hashtagContainer.on(\"quill-position\", function(event) {\n if (event.detail !== null) {\n // When replacing the text content after selecting a hashtag, we only need\n // to know the hashtag's start position as that is the point which we want\n // to replace.\n let quill = event.target.__quill;\n if (quill.getText(event.detail.index - 1, 1) === \"#\") {\n cursor = event.detail.index;\n }\n }\n });\n\n /* eslint no-use-before-define: [\"error\", { \"variables\": false }]*/\n let remoteSearch = function(text, cb) {\n $.post(window.Decidim.config.get(\"api_path\"), {query: `{hashtags(name:\"${text}\") {name}}`}).\n\n then((response) => {\n let data = response.data.hashtags || {};\n cb(data)\n }).fail(function() {\n cb([])\n }).always(() => {\n // This function runs Tribute every single time you type something\n // So we must evalute DOM properties after each\n const $parent = $(tribute.current.element).parent()\n $parent.addClass(\"is-active\")\n\n // We need to move the container to the wrapper selected\n const $tribute = $parent.find(\".tribute-container\");\n // Remove the inline styles, relative to absolute positioning\n $tribute.removeAttr(\"style\");\n })\n };\n\n // tribute.js docs - http://github.com/zurb/tribute\n /* global Tribute*/\n let tribute = new Tribute({\n trigger: \"#\",\n values: function (text, cb) {\n remoteSearch(text, (hashtags) => cb(hashtags));\n },\n positionMenu: true,\n menuContainer: null,\n fillAttr: \"name\",\n noMatchTemplate: noMatchTemplate,\n lookup: (item) => item.name,\n selectTemplate: function(item) {\n if (typeof item === \"undefined\") {\n return null;\n }\n if (this.range.isContentEditable(this.current.element)) {\n // Check quill.js\n if ($(this.current.element).hasClass(\"ql-editor\")) {\n let editorContainer = $(this.current.element).parent().get(0);\n let quill = editorContainer.__quill;\n quill.insertText(cursor - 1, `#${item.original.name} `, Quill.sources.API);\n // cursor position + hashtag length + \"#\" sign + space\n let position = cursor + item.original.name.length + 2;\n\n let next = 0;\n if (quill.getLength() > position) {\n next = position\n } else {\n next = quill.getLength() - 1\n }\n // Workaround https://github.com/quilljs/quill/issues/731\n setTimeout(function () {\n quill.setSelection(next, 0);\n }, 500);\n\n return \"\"\n }\n return `#${item.original.name}`;\n }\n return `#${item.original.name}`;\n },\n menuItemTemplate: function(item) {\n let tpl = `${item.original.name}`;\n return tpl;\n }\n });\n\n // Tribute needs to be attached to the `.ql-editor` element as said at:\n // https://github.com/quilljs/quill/issues/1816\n //\n // For this reason we need to wait a bit for quill to initialize itself.\n setTimeout(function() {\n $hashtagContainer.each((index, item) => {\n let $qlEditor = $(\".ql-editor\", item);\n if ($qlEditor.length > 0) {\n tribute.attach($qlEditor);\n } else {\n tribute.attach(item);\n }\n });\n }, 1000);\n\n // DOM manipulation\n $hashtagContainer.on(\"focusin\", (event) => {\n // Set the parent container relative to the current element\n\n tribute.menuContainer = event.target.parentNode;\n });\n $hashtagContainer.on(\"focusout\", (event) => {\n let $parent = $(event.target).parent();\n\n if ($parent.hasClass(\"is-active\")) {\n $parent.removeClass(\"is-active\");\n }\n });\n $hashtagContainer.on(\"input\", (event) => {\n let $parent = $(event.target).parent();\n\n if (tribute.isActive) {\n // We need to move the container to the wrapper selected\n let $tribute = $(\".tribute-container\");\n $tribute.appendTo($parent);\n // Parent adaptation\n $parent.addClass(\"is-active\");\n } else {\n $parent.removeClass(\"is-active\");\n }\n });\n});\n","/* eslint no-unused-vars: 0 */\nimport Tribute from \"src/decidim/vendor/tribute\"\n\n$(() => {\n const $mentionContainer = $(\".js-mentions\");\n const nodatafound = $mentionContainer.attr(\"data-noresults\");\n\n let noMatchTemplate = null\n if (nodatafound) {\n noMatchTemplate = () => `
  • ${nodatafound}
  • `;\n }\n\n // Listener for the event triggered by quilljs\n let cursor = \"\";\n $mentionContainer.on(\"quill-position\", (event) => {\n if (event.detail !== null) {\n // When replacing the text content after selecting a hashtag, we only need\n // to know the hashtag's start position as that is the point which we want\n // to replace.\n let quill = event.target.__quill;\n if (quill.getText(event.detail.index - 1, 1) === \"@\") {\n cursor = event.detail.index;\n }\n }\n });\n\n // Returns a function, that, as long as it continues to be invoked, will not\n // be triggered. The function will be called after it stops being called for\n // N milliseconds\n /* eslint no-invalid-this: 0 */\n /* eslint consistent-this: 0 */\n /* eslint prefer-reflect: 0 */\n const debounce = function(callback, wait) {\n let timeout = null;\n return (...args) => {\n const context = this;\n clearTimeout(timeout);\n timeout = setTimeout(() => callback.apply(context, args), wait);\n };\n }\n\n /* eslint no-use-before-define: [\"error\", { \"variables\": false }]*/\n let remoteSearch = function(text, cb) {\n let query = `{users(filter:{wildcard:\"${text}\"}){nickname,name,avatarUrl,__typename,...on UserGroup{membersCount}}}`;\n $.post(window.Decidim.config.get(\"api_path\"), {query: query}).\n then((response) => {\n let data = response.data.users || {};\n cb(data)\n }).fail(function() {\n cb([])\n }).always(() => {\n // This function runs Tribute every single time you type something\n // So we must evalute DOM properties after each\n const $parent = $(tribute.current.element).parent();\n $parent.addClass(\"is-active\");\n\n // We need to move the container to the wrapper selected\n const $tribute = $parent.find(\".tribute-container\");\n // Remove the inline styles, relative to absolute positioning\n $tribute.removeAttr(\"style\");\n })\n };\n\n // tribute.js docs - http://github.com/zurb/tribute\n /* global Tribute*/\n let tribute = new Tribute({\n trigger: \"@\",\n // avoid overloading the API if the user types too fast\n values: debounce(function (text, cb) {\n remoteSearch(text, (users) => cb(users));\n }, 250),\n positionMenu: true,\n menuContainer: null,\n allowSpaces: true,\n menuItemLimit: 5,\n fillAttr: \"nickname\",\n selectClass: \"highlight\",\n noMatchTemplate: noMatchTemplate,\n lookup: (item) => item.nickname + item.name,\n selectTemplate: function(item) {\n if (typeof item === \"undefined\") {\n return null;\n }\n if (this.range.isContentEditable(this.current.element)) {\n // Check quill.js\n if ($(this.current.element).hasClass(\"ql-editor\")) {\n let editorContainer = $(this.current.element).parent().get(0);\n let quill = editorContainer.__quill;\n quill.insertText(cursor - 1, `${item.original.nickname} `, Quill.sources.API);\n // cursor position + nickname length + \"@\" sign + space\n let position = cursor + item.original.nickname.length + 2\n\n let next = 0;\n if (quill.getLength() > position) {\n next = position\n } else {\n next = quill.getLength() - 1\n }\n // Workaround https://github.com/quilljs/quill/issues/731\n setTimeout(function () {\n quill.setSelection(next, 0);\n }, 500);\n\n return \"\"\n }\n return `${item.original.nickname}`;\n }\n return item.original.nickname;\n },\n menuItemTemplate: function(item) {\n let svg = \"\";\n if (window.Decidim && item.original.__typename === \"UserGroup\") {\n const iconsPath = window.Decidim.config.get(\"icons_path\");\n\n svg = `${item.original.membersCount}x `;\n }\n return `
    \n \"author-avatar\"\n ${item.original.nickname}\n ${item.original.name}\n ${svg}\n
    `;\n }\n });\n\n let setupEvents = function($element) {\n // DOM manipulation\n $element.on(\"focusin\", (event) => {\n // Set the parent container relative to the current element\n tribute.menuContainer = event.target.parentNode;\n });\n $element.on(\"focusout\", (event) => {\n let $parent = $(event.target).parent();\n\n if ($parent.hasClass(\"is-active\")) {\n $parent.removeClass(\"is-active\");\n }\n });\n $element.on(\"input\", (event) => {\n let $parent = $(event.target).parent();\n\n if (tribute.isActive) {\n // We need to move the container to the wrapper selected\n let $tribute = $(\".tribute-container\");\n $tribute.appendTo($parent);\n\n // Parent adaptation\n $parent.addClass(\"is-active\");\n } else {\n $parent.removeClass(\"is-active\");\n }\n });\n };\n\n setupEvents($mentionContainer);\n\n // This allows external libraries (like React) to use the component\n // by simply firing and event targeting the element where to attach Tribute\n $(document).on(\"attach-mentions-element\", (event, element) => {\n if (!element) {\n return;\n }\n tribute.attach(element);\n // Due a bug in Tribute, re-add menu to DOM if it has been removed\n // See https://github.com/zurb/tribute/issues/140\n if (tribute.menu && !document.body.contains(tribute.menu)) {\n tribute.range.getDocument().body.appendChild(tribute.menu);\n }\n setupEvents($(element));\n });\n\n // tribute.attach($mentionContainer);\n // Tribute needs to be attached to the `.ql-editor` element as said at:\n // https://github.com/quilljs/quill/issues/1816\n //\n // For this reason we need to wait a bit for quill to initialize itself.\n setTimeout(function() {\n $mentionContainer.each((index, item) => {\n let $qlEditor = $(\".ql-editor\", item);\n if ($qlEditor.length > 0) {\n tribute.attach($qlEditor);\n } else {\n tribute.attach(item);\n }\n });\n }, 1000);\n});\n\n","import dayjs from \"dayjs\"\n\n$(() => {\n let sessionTimeOutEnabled = true;\n const $timeoutModal = $(\"#timeoutModal\");\n const timeoutInSeconds = parseInt($timeoutModal.data(\"session-timeout\"), 10);\n const secondsUntilTimeoutPath = $timeoutModal.data(\"seconds-until-timeout-path\");\n const heartbeatPath = $timeoutModal.data(\"heartbeat-path\");\n const interval = parseInt($timeoutModal.data(\"session-timeout-interval\"), 10);\n const preventTimeOutSeconds = $timeoutModal.data(\"prevent-timeout-seconds\");\n let endsAt = dayjs().add(timeoutInSeconds, \"seconds\");\n let lastAction = dayjs();\n const $continueSessionButton = $(\"#continueSession\");\n let lastActivityCheck = dayjs();\n // 5 * 60 seconds = 5 Minutes\n const activityCheckInterval = 5 * 60;\n const preventTimeOutUntil = dayjs().add(preventTimeOutSeconds, \"seconds\");\n\n // Ajax request is made at timeout_modal.html.erb\n $continueSessionButton.on(\"click\", () => {\n $timeoutModal.foundation(\"close\");\n // In admin panel we have to hide all overlays\n $(\".reveal-overlay\").css(\"display\", \"none\");\n lastActivityCheck = dayjs();\n })\n\n if (isNaN(interval)) {\n return;\n }\n if (!timeoutInSeconds) {\n return;\n }\n\n const disableSessionTimeout = () => {\n sessionTimeOutEnabled = false;\n }\n\n const enableSessionTimeout = () => {\n sessionTimeOutEnabled = true;\n }\n\n const setTimer = (secondsUntilExpiration) => {\n if (!secondsUntilExpiration) {\n return;\n }\n endsAt = dayjs().add(secondsUntilExpiration, \"seconds\");\n }\n\n const sessionTimeLeft = () => {\n return $.ajax({\n method: \"GET\",\n url: secondsUntilTimeoutPath,\n contentType: \"application/json\",\n headers: {\n \"X-CSRF-Token\": $(\"meta[name=csrf-token]\").attr(\"content\")\n }\n });\n }\n\n const heartbeat = () => {\n return $.ajax({\n method: \"POST\",\n url: heartbeatPath,\n contentType: \"application/javascript\"\n });\n }\n\n const userBeenActiveSince = (seconds) => {\n return (dayjs() - lastAction) / 1000 < seconds;\n }\n\n const exitInterval = setInterval(() => {\n const timeSinceLastActivityCheckInSeconds = Math.round((dayjs() - lastActivityCheck) / 1000);\n\n const popupOpen = $(\"#timeoutModal\").parent().css(\"display\") === \"block\";\n if (!popupOpen && timeSinceLastActivityCheckInSeconds >= activityCheckInterval) {\n lastActivityCheck = dayjs();\n if (userBeenActiveSince(activityCheckInterval)) {\n heartbeat();\n return;\n }\n }\n\n const timeRemaining = Math.round((endsAt - dayjs()) / 1000);\n if (timeRemaining > 170) {\n return;\n }\n\n if (dayjs() < preventTimeOutUntil) {\n heartbeat();\n return;\n }\n\n sessionTimeLeft().then((result) => {\n const secondsUntilSessionExpires = result.seconds_remaining;\n setTimer(secondsUntilSessionExpires);\n\n if (!sessionTimeOutEnabled) {\n heartbeat();\n } else if (secondsUntilSessionExpires <= 90) {\n $timeoutModal.find(\"#reveal-hidden-sign-out\")[0].click();\n } else if (secondsUntilSessionExpires <= 150) {\n $timeoutModal.foundation(\"open\");\n }\n });\n }, interval);\n\n $(document).mousemove(() => {\n lastAction = dayjs();\n })\n $(document).scroll(() => {\n lastAction = dayjs();\n })\n $(document).keypress(() => {\n lastAction = dayjs();\n })\n\n // Devise restarts its own timer on ajax requests,\n // so here we restart our.\n $(document).on(\"ajax:complete\", () => {\n setTimer(timeoutInSeconds);\n });\n\n $(document).ajaxComplete((_event, _xhr, settings) => {\n if (settings && settings.url === secondsUntilTimeoutPath) {\n return;\n }\n setTimer(timeoutInSeconds);\n });\n\n window.addEventListener(\"beforeunload\", () => {\n clearInterval(exitInterval);\n return;\n });\n\n window.Decidim.enableSessionTimeout = enableSessionTimeout\n window.Decidim.disableSessionTimeout = disableSessionTimeout\n});\n","/* eslint-disable */\n\n/* =========================================================\n * foundation-datepicker.js\n * Copyright 2015 Peter Beno, najlepsiwebdesigner@gmail.com, @benopeter\n * project website http://foundation-datepicker.peterbeno.com\n * ========================================================= */\n\n// This file is a modified version of the original file\n// See\n// - https://github.com/decidim/decidim/pull/1207\n// - https://github.com/decidim/decidim/pull/2512\n// - https://github.com/decidim/decidim/pull/3515\n\n!(function($) {\n\n function UTCDate() {\n return new Date(Date.UTC(...arguments));\n }\n\n function UTCToday() {\n let today = new Date();\n return UTCDate(today.getUTCFullYear(), today.getUTCMonth(), today.getUTCDate());\n }\n\n let Datepicker = function(element, options) {\n let that = this;\n\n this.element = $(element);\n this.autoShow = (options.autoShow == undefined ? true : options.autoShow);\n this.appendTo = options.appendTo || \"body\";\n this.closeButton = options.closeButton;\n this.language = options.language || this.element.data(\"date-language\") || \"en\";\n this.language = this.language in dates ? this.language : this.language.split(\"-\")[0]; // Check if \"de-DE\" style date is available, if not language should fallback to 2 letter code eg \"de\"\n this.language = this.language in dates ? this.language : \"en\";\n this.isRTL = dates[this.language].rtl || false;\n this.format = DPGlobal.parseFormat(options.format || this.element.data(\"date-format\") || dates[this.language].format || \"mm/dd/yyyy\");\n this.formatText = options.format || this.element.data(\"date-format\") || dates[this.language].format || \"mm/dd/yyyy\";\n this.isInline = false;\n this.isInput = this.element.is(\"input\");\n this.component = this.element.is(\".date\") ? this.element.find(\".prefix, .postfix\") : false;\n this.hasInput = this.component && this.element.find(\"input\").length;\n this.disableDblClickSelection = options.disableDblClickSelection;\n this.onRender = options.onRender || function() {};\n if (this.component && this.component.length === 0) {\n this.component = false;\n }\n this.linkField = options.linkField || this.element.data(\"link-field\") || false;\n this.linkFormat = DPGlobal.parseFormat(options.linkFormat || this.element.data(\"link-format\") || \"yyyy-mm-dd hh:ii:ss\");\n this.minuteStep = options.minuteStep || this.element.data(\"minute-step\") || 5;\n this.pickerPosition = options.pickerPosition || this.element.data(\"picker-position\") || \"bottom-right\";\n this.initialDate = options.initialDate || null;\n this.faCSSprefix = options.faCSSprefix || \"fa\";\n this.leftArrow = options.leftArrow || ``;\n this.rightArrow = options.rightArrow || ``;\n this.closeIcon = options.closeIcon || ``;\n\n\n this.minView = 0;\n if (\"minView\" in options) {\n this.minView = options.minView;\n } else if (\"minView\" in this.element.data()) {\n this.minView = this.element.data(\"min-view\");\n }\n this.minView = DPGlobal.convertViewMode(this.minView);\n\n this.maxView = DPGlobal.modes.length - 1;\n if (\"maxView\" in options) {\n this.maxView = options.maxView;\n } else if (\"maxView\" in this.element.data()) {\n this.maxView = this.element.data(\"max-view\");\n }\n this.maxView = DPGlobal.convertViewMode(this.maxView);\n\n this.startViewMode = \"month\";\n if (\"startView\" in options) {\n this.startViewMode = options.startView;\n } else if (\"startView\" in this.element.data()) {\n this.startViewMode = this.element.data(\"start-view\");\n }\n this.startViewMode = DPGlobal.convertViewMode(this.startViewMode);\n this.viewMode = this.startViewMode;\n\n if (!(\"minView\" in options) && !(\"maxView\" in options) && !(this.element.data(\"min-view\")) && !(this.element.data(\"max-view\"))) {\n this.pickTime = false;\n if (\"pickTime\" in options) {\n this.pickTime = options.pickTime;\n }\n if (this.pickTime == true) {\n this.minView = 0;\n this.maxView = 4;\n } else {\n this.minView = 2;\n this.maxView = 4;\n }\n }\n\n this.forceParse = true;\n if (\"forceParse\" in options) {\n this.forceParse = options.forceParse;\n } else if (\"dateForceParse\" in this.element.data()) {\n this.forceParse = this.element.data(\"date-force-parse\");\n }\n\n\n this.picker = $(DPGlobal.template(this.leftArrow, this.rightArrow, this.closeIcon)).\n appendTo(this.isInline ? this.element : this.appendTo).\n on({\n click: $.proxy(this.click, this),\n mousedown: $.proxy(this.mousedown, this)\n });\n if (this.closeButton) {\n this.picker.find(\"a.datepicker-close\").show();\n } else {\n this.picker.find(\"a.datepicker-close\").hide();\n }\n\n if (this.isInline) {\n this.picker.addClass(\"datepicker-inline\");\n } else {\n this.picker.addClass(\"datepicker-dropdown dropdown-menu\");\n }\n if (this.isRTL) {\n this.picker.addClass(\"datepicker-rtl\");\n\n this.picker.find(\".date-switch\").each(function() {\n $(this).parent().prepend($(this).siblings(\".next\"));\n $(this).parent().append($(this).siblings(\".prev\"));\n })\n this.picker.find(\".prev, .next\").toggleClass(\"prev next\");\n\n }\n $(document).on(\"mousedown\", function(e) {\n if (that.isInput && e.target === that.element[0]) {\n return;\n }\n\n // Clicked outside the datepicker, hide it\n if ($(e.target).closest(\".datepicker.datepicker-inline, .datepicker.datepicker-dropdown\").length === 0) {\n that.hide();\n }\n });\n\n this.autoclose = true;\n if (\"autoclose\" in options) {\n this.autoclose = options.autoclose;\n } else if (\"dateAutoclose\" in this.element.data()) {\n this.autoclose = this.element.data(\"date-autoclose\");\n }\n\n this.keyboardNavigation = true;\n if (\"keyboardNavigation\" in options) {\n this.keyboardNavigation = options.keyboardNavigation;\n } else if (\"dateKeyboardNavigation\" in this.element.data()) {\n this.keyboardNavigation = this.element.data(\"date-keyboard-navigation\");\n }\n\n this.todayBtn = (options.todayBtn || this.element.data(\"date-today-btn\") || false);\n this.todayHighlight = (options.todayHighlight || this.element.data(\"date-today-highlight\") || false);\n\n this.calendarWeeks = false;\n if (\"calendarWeeks\" in options) {\n this.calendarWeeks = options.calendarWeeks;\n } else if (\"dateCalendarWeeks\" in this.element.data()) {\n this.calendarWeeks = this.element.data(\"date-calendar-weeks\");\n }\n if (this.calendarWeeks)\n {this.picker.find(\"tfoot th.today\").\n attr(\"colspan\", function(i, val) {\n return parseInt(val) + 1;\n });}\n\n this.weekStart = ((options.weekStart || this.element.data(\"date-weekstart\") || dates[this.language].weekStart || 0) % 7);\n this.weekEnd = ((this.weekStart + 6) % 7);\n this.startDate = -Infinity;\n this.endDate = Infinity;\n this.daysOfWeekDisabled = [];\n this.datesDisabled = [];\n this.setStartDate(options.startDate || this.element.data(\"date-startdate\"));\n this.setEndDate(options.endDate || this.element.data(\"date-enddate\"));\n this.setDaysOfWeekDisabled(options.daysOfWeekDisabled || this.element.data(\"date-days-of-week-disabled\"));\n this.setDatesDisabled(options.datesDisabled || this.element.data(\"dates-disabled\"));\n\n if (this.initialDate != null) {\n this.date = this.viewDate = DPGlobal.parseDate(this.initialDate, this.format, this.language);\n this.setValue();\n }\n\n this.fillDow();\n this.fillMonths();\n this.update();\n\n this.showMode();\n\n if (this.isInline) {\n this.show();\n }\n\n this._attachEvents();\n };\n\n Datepicker.prototype = {\n constructor: Datepicker,\n\n _events: [],\n _attachEvents: function() {\n this._detachEvents();\n if (this.isInput) { // single input\n if (!this.keyboardNavigation) {\n this._events = [\n [this.element, {\n focus: (this.autoShow) ? $.proxy(this.show, this) : function() {}\n }]\n ];\n } else {\n this._events = [\n [this.element, {\n focus: (this.autoShow) ? $.proxy(this.show, this) : function() {},\n keyup: $.proxy(this.update, this),\n keydown: $.proxy(this.keydown, this),\n click: (this.element.attr(\"readonly\")) ? $.proxy(this.show, this) : function() {}\n }]\n ];\n }\n }\n else if (this.component && this.hasInput) { // component: input + button\n this._events = [\n // For components that are not readonly, allow keyboard nav\n [this.element.find(\"input\"), {\n focus: (this.autoShow) ? $.proxy(this.show, this) : function() {},\n keyup: $.proxy(this.update, this),\n keydown: $.proxy(this.keydown, this)\n }],\n [this.component, {\n click: $.proxy(this.show, this)\n }]\n ];\n } else if (this.element.is(\"div\")) { // inline datepicker\n this.isInline = true;\n } else {\n this._events = [\n [this.element, {\n click: $.proxy(this.show, this)\n }]\n ];\n }\n\n if (this.disableDblClickSelection) {\n this._events[this._events.length] = [\n this.element, {\n dblclick: function(e) {\n e.preventDefault();\n e.stopPropagation();\n $(this).blur()\n }\n }\n ];\n }\n\n for (var el, ev, i = 0; i < this._events.length; i++) {\n el = this._events[i][0];\n ev = this._events[i][1];\n el.on(ev);\n }\n },\n _detachEvents: function() {\n for (var el, ev, i = 0; i < this._events.length; i++) {\n el = this._events[i][0];\n ev = this._events[i][1];\n el.off(ev);\n }\n this._events = [];\n },\n\n show: function(e) {\n this.picker.show();\n this.height = this.component ? this.component.outerHeight() : this.element.outerHeight();\n this.update();\n this.place();\n $(window).on(\"resize\", $.proxy(this.place, this));\n if (e) {\n e.stopPropagation();\n e.preventDefault();\n }\n this.element.trigger({\n type: \"show\",\n date: this.date\n });\n },\n\n hide: function(e) {\n if (this.isInline) {return;}\n if (!this.picker.is(\":visible\")) {return;}\n this.picker.hide();\n $(window).off(\"resize\", this.place);\n this.viewMode = this.startViewMode;\n this.showMode();\n if (!this.isInput) {\n $(document).off(\"mousedown\", this.hide);\n }\n\n if (\n this.forceParse &&\n (\n this.isInput && this.element.val() ||\n this.hasInput && this.element.find(\"input\").val()\n )\n )\n {this.setValue();}\n this.element.trigger({\n type: \"hide\",\n date: this.date\n });\n },\n\n remove: function() {\n this._detachEvents();\n this.picker.remove();\n delete this.element.data().datepicker;\n },\n\n getDate: function() {\n let d = this.getUTCDate();\n return new Date(d.getTime() + (d.getTimezoneOffset() * 60000));\n },\n\n getUTCDate: function() {\n return this.date;\n },\n\n setDate: function(d) {\n this.setUTCDate(new Date(d.getTime() - (d.getTimezoneOffset() * 60000)));\n },\n\n setUTCDate: function(d) {\n this.date = d;\n this.setValue();\n },\n\n setValue: function() {\n let formatted = this.getFormattedDate();\n if (!this.isInput) {\n if (this.component) {\n this.element.find(\"input\").val(formatted);\n }\n this.element.data(\"date\", formatted);\n } else {\n this.element.val(formatted);\n }\n },\n\n getFormattedDate: function(format) {\n if (format === undefined)\n {format = this.format;}\n return DPGlobal.formatDate(this.date, format, this.language);\n },\n\n setStartDate: function(startDate) {\n this.startDate = startDate || -Infinity;\n if (this.startDate !== -Infinity) {\n this.startDate = DPGlobal.parseDate(this.startDate, this.format, this.language);\n }\n this.update();\n this.updateNavArrows();\n },\n\n setEndDate: function(endDate) {\n this.endDate = endDate || Infinity;\n if (this.endDate !== Infinity) {\n this.endDate = DPGlobal.parseDate(this.endDate, this.format, this.language);\n }\n this.update();\n this.updateNavArrows();\n },\n\n setDaysOfWeekDisabled: function(daysOfWeekDisabled) {\n this.daysOfWeekDisabled = daysOfWeekDisabled || [];\n if (!$.isArray(this.daysOfWeekDisabled)) {\n this.daysOfWeekDisabled = this.daysOfWeekDisabled.split(/,\\s*/);\n }\n this.daysOfWeekDisabled = $.map(this.daysOfWeekDisabled, function(d) {\n return parseInt(d, 10);\n });\n this.update();\n this.updateNavArrows();\n },\n\n setDatesDisabled: function(datesDisabled) {\n this.datesDisabled = datesDisabled || [];\n if (!$.isArray(this.datesDisabled)) {\n this.datesDisabled = this.datesDisabled.split(/,\\s*/);\n }\n this.datesDisabled = $.map(this.datesDisabled, function(d) {\n return DPGlobal.parseDate(d, this.format, this.language).valueOf();\n });\n this.update();\n this.updateNavArrows();\n },\n\n place: function() {\n if (this.isInline) {return;}\n let zIndexes = [];\n this.element.parents().map(function() {\n if ($(this).css(\"z-index\") != \"auto\") {\n zIndexes.push(parseInt($(this).css(\"z-index\")));\n }\n });\n let zIndex = zIndexes.sort(function(a, b) { return a - b; }).pop() + 10;\n let textbox = this.component ? this.component : this.element;\n let offset = textbox.offset();\n let height = textbox.outerHeight() + parseInt(textbox.css(\"margin-top\"));\n let width = textbox.outerWidth() + parseInt(textbox.css(\"margin-left\"));\n let fullOffsetTop = offset.top + height;\n let offsetLeft = offset.left;\n this.picker.removeClass(\"datepicker-top datepicker-bottom\");\n // can we show it on top?\n let canShowTop = ($(window).scrollTop() < offset.top - this.picker.outerHeight());\n let canShowBottom = (fullOffsetTop + this.picker.outerHeight()) < $(window).scrollTop() + $(window).height();\n // If the datepicker is going to be below the window, show it on top of the input if it fits\n if (!canShowBottom && canShowTop) {\n fullOffsetTop = offset.top - this.picker.outerHeight();\n this.picker.addClass(\"datepicker-top\");\n }\n else {\n // Scroll up if we cannot show it on bottom or top (for mobile devices)\n if (!canShowBottom) {$(window).scrollTop(offset.top);}\n this.picker.addClass(\"datepicker-bottom\");\n }\n\n // if the datepicker is going to go past the right side of the window, we want\n // to set the right position so the datepicker lines up with the textbox\n if (offset.left + this.picker.width() >= $(window).width()) {\n offsetLeft = (offset.left + width) - this.picker.width();\n }\n this.picker.css({\n top: fullOffsetTop,\n left: offsetLeft,\n zIndex: zIndex\n });\n },\n\n update: function() {\n let date,\n fromArgs = false;\n let currentVal = this.isInput ? this.element.val() : this.element.data(\"date\") || this.element.find(\"input\").val();\n if (arguments && arguments.length && (typeof arguments[0] === \"string\" || arguments[0] instanceof Date)) {\n date = arguments[0];\n fromArgs = true;\n }\n else {\n date = this.isInput ? this.element.val() : this.element.data(\"date\") || this.element.find(\"input\").val();\n }\n\n this.date = DPGlobal.parseDate(date, this.format, this.language);\n\n if (fromArgs) {\n this.setValue();\n } else if (currentVal == \"\") {\n this.element.trigger({\n type: \"changeDate\",\n date: null\n });\n }\n\n if (this.date < this.startDate) {\n this.viewDate = new Date(this.startDate.valueOf());\n } else if (this.date > this.endDate) {\n this.viewDate = new Date(this.endDate.valueOf());\n } else {\n this.viewDate = new Date(this.date.valueOf());\n }\n this.fill();\n },\n\n fillDow: function() {\n let dowCnt = this.weekStart,\n html = \"\";\n if (this.calendarWeeks) {\n let cell = ' ';\n html += cell;\n this.picker.find(\".datepicker-days thead tr:first-child\").prepend(cell);\n }\n while (dowCnt < this.weekStart + 7) {\n html += `${dates[this.language].daysMin[(dowCnt++) % 7]}`;\n }\n html += \"\";\n this.picker.find(\".datepicker-days thead\").append(html);\n },\n\n fillMonths: function() {\n let html = \"\",\n i = 0;\n while (i < 12) {\n html += `${dates[this.language].monthsShort[i++]}`;\n }\n this.picker.find(\".datepicker-months td\").html(html);\n },\n\n fill: function() {\n if (this.date == null || this.viewDate == null) {\n return;\n }\n\n let d = new Date(this.viewDate.valueOf()),\n year = d.getUTCFullYear(),\n month = d.getUTCMonth(),\n dayMonth = d.getUTCDate(),\n hours = d.getUTCHours(),\n minutes = d.getUTCMinutes(),\n startYear = this.startDate !== -Infinity ? this.startDate.getUTCFullYear() : -Infinity,\n startMonth = this.startDate !== -Infinity ? this.startDate.getUTCMonth() : -Infinity,\n endYear = this.endDate !== Infinity ? this.endDate.getUTCFullYear() : Infinity,\n endMonth = this.endDate !== Infinity ? this.endDate.getUTCMonth() : Infinity,\n currentDate = this.date && UTCDate(this.date.getUTCFullYear(), this.date.getUTCMonth(), this.date.getUTCDate()).valueOf(),\n today = new Date(),\n titleFormat = dates[this.language].titleFormat || dates.en.titleFormat;\n // this.picker.find('.datepicker-days thead th.date-switch')\n // .text(DPGlobal.formatDate(new UTCDate(year, month), titleFormat, this.language));\n\n this.picker.find(\".datepicker-days thead th:eq(1)\").\n text(`${dates[this.language].months[month]} ${year}`);\n this.picker.find(\".datepicker-hours thead th:eq(1)\").\n text(`${dayMonth} ${dates[this.language].months[month]} ${year}`);\n this.picker.find(\".datepicker-minutes thead th:eq(1)\").\n text(`${dayMonth} ${dates[this.language].months[month]} ${year}`);\n\n\n this.picker.find(\"tfoot th.today\").\n text(dates[this.language].today).\n toggle(this.todayBtn !== false);\n this.updateNavArrows();\n this.fillMonths();\n let prevMonth = UTCDate(year, month - 1, 28, 0, 0, 0, 0),\n day = DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth());\n prevMonth.setUTCDate(day);\n prevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.weekStart + 7) % 7);\n let nextMonth = new Date(prevMonth.valueOf());\n nextMonth.setUTCDate(nextMonth.getUTCDate() + 42);\n nextMonth = nextMonth.valueOf();\n let html = [];\n let clsName;\n while (prevMonth.valueOf() < nextMonth) {\n if (prevMonth.getUTCDay() == this.weekStart) {\n html.push(\"\");\n if (this.calendarWeeks) {\n // adapted from https://github.com/timrwood/moment/blob/master/moment.js#L128\n let a = new Date(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth(), prevMonth.getUTCDate() - prevMonth.getDay() + 10 - (this.weekStart && this.weekStart % 7 < 5 && 7)),\n b = new Date(a.getFullYear(), 0, 4),\n calWeek = ~~((a - b) / 864e5 / 7 + 1.5);\n html.push(`${calWeek}`);\n }\n }\n clsName = ` ${this.onRender(prevMonth)} `;\n if (prevMonth.getUTCFullYear() < year || (prevMonth.getUTCFullYear() == year && prevMonth.getUTCMonth() < month)) {\n clsName += \" old\";\n } else if (prevMonth.getUTCFullYear() > year || (prevMonth.getUTCFullYear() == year && prevMonth.getUTCMonth() > month)) {\n clsName += \" new\";\n }\n // Compare internal UTC date with local today, not UTC today\n if (this.todayHighlight &&\n prevMonth.getUTCFullYear() == today.getFullYear() &&\n prevMonth.getUTCMonth() == today.getMonth() &&\n prevMonth.getUTCDate() == today.getDate()) {\n clsName += \" today\";\n }\n if (currentDate && prevMonth.valueOf() == currentDate) {\n clsName += \" active\";\n }\n if (prevMonth.valueOf() < this.startDate || prevMonth.valueOf() > this.endDate ||\n $.inArray(prevMonth.getUTCDay(), this.daysOfWeekDisabled) !== -1 ||\n $.inArray(prevMonth.valueOf(), this.datesDisabled) !== -1) {\n clsName += \" disabled\";\n }\n html.push(`${prevMonth.getUTCDate()}`);\n if (prevMonth.getUTCDay() == this.weekEnd) {\n html.push(\"\");\n }\n prevMonth.setUTCDate(prevMonth.getUTCDate() + 1);\n }\n this.picker.find(\".datepicker-days tbody\").empty().append(html.join(\"\"));\n\n html = [];\n for (var i = 0; i < 24; i++) {\n var actual = UTCDate(year, month, dayMonth, i);\n clsName = \"\";\n // We want the previous hour for the startDate\n if ((actual.valueOf() + 3600000) < this.startDate || actual.valueOf() > this.endDate) {\n clsName += \" disabled\";\n } else if (hours == i) {\n clsName += \" active\";\n }\n html.push(`${i}:00`);\n }\n this.picker.find(\".datepicker-hours td\").html(html.join(\"\"));\n\n html = [];\n for (var i = 0; i < 60; i += this.minuteStep) {\n var actual = UTCDate(year, month, dayMonth, hours, i);\n clsName = \"\";\n if (actual.valueOf() < this.startDate || actual.valueOf() > this.endDate) {\n clsName += \" disabled\";\n } else if (Math.floor(minutes / this.minuteStep) == Math.floor(i / this.minuteStep)) {\n clsName += \" active\";\n }\n html.push(`${hours}:${i < 10 ? `0${i}` : i}`);\n }\n this.picker.find(\".datepicker-minutes td\").html(html.join(\"\"));\n\n\n let currentYear = this.date && this.date.getUTCFullYear();\n let months = this.picker.find(\".datepicker-months\").\n find(\"th:eq(1)\").\n text(year).\n end().\n find(\"span\").removeClass(\"active\");\n if (currentYear && currentYear == year) {\n months.eq(this.date.getUTCMonth()).addClass(\"active\");\n }\n if (year < startYear || year > endYear) {\n months.addClass(\"disabled\");\n }\n if (year == startYear) {\n months.slice(0, startMonth).addClass(\"disabled\");\n }\n if (year == endYear) {\n months.slice(endMonth + 1).addClass(\"disabled\");\n }\n\n html = \"\";\n year = parseInt(year / 10, 10) * 10;\n let yearCont = this.picker.find(\".datepicker-years\").\n find(\"th:eq(1)\").\n text(`${year}-${year + 9}`).\n end().\n find(\"td\");\n year -= 1;\n for (var i = -1; i < 11; i++) {\n html += ` endYear ? \" disabled\" : \"\"}\">${year}`;\n year += 1;\n }\n yearCont.html(html);\n },\n\n updateNavArrows: function() {\n let d = new Date(this.viewDate),\n year = d.getUTCFullYear(),\n month = d.getUTCMonth(),\n day = d.getUTCDate(),\n hour = d.getUTCHours();\n switch (this.viewMode) {\n case 0:\n if (this.startDate !== -Infinity && year <= this.startDate.getUTCFullYear() && month <= this.startDate.getUTCMonth() && day <= this.startDate.getUTCDate() && hour <= this.startDate.getUTCHours()) {\n this.picker.find(\".prev\").css({\n visibility: \"hidden\"\n });\n } else {\n this.picker.find(\".prev\").css({\n visibility: \"visible\"\n });\n }\n if (this.endDate !== Infinity && year >= this.endDate.getUTCFullYear() && month >= this.endDate.getUTCMonth() && day >= this.endDate.getUTCDate() && hour >= this.endDate.getUTCHours()) {\n this.picker.find(\".next\").css({\n visibility: \"hidden\"\n });\n } else {\n this.picker.find(\".next\").css({\n visibility: \"visible\"\n });\n }\n break;\n case 1:\n if (this.startDate !== -Infinity && year <= this.startDate.getUTCFullYear() && month <= this.startDate.getUTCMonth() && day <= this.startDate.getUTCDate()) {\n this.picker.find(\".prev\").css({\n visibility: \"hidden\"\n });\n } else {\n this.picker.find(\".prev\").css({\n visibility: \"visible\"\n });\n }\n if (this.endDate !== Infinity && year >= this.endDate.getUTCFullYear() && month >= this.endDate.getUTCMonth() && day >= this.endDate.getUTCDate()) {\n this.picker.find(\".next\").css({\n visibility: \"hidden\"\n });\n } else {\n this.picker.find(\".next\").css({\n visibility: \"visible\"\n });\n }\n break;\n case 2:\n if (this.startDate !== -Infinity && year <= this.startDate.getUTCFullYear() && month <= this.startDate.getUTCMonth()) {\n this.picker.find(\".prev\").css({\n visibility: \"hidden\"\n });\n } else {\n this.picker.find(\".prev\").css({\n visibility: \"visible\"\n });\n }\n if (this.endDate !== Infinity && year >= this.endDate.getUTCFullYear() && month >= this.endDate.getUTCMonth()) {\n this.picker.find(\".next\").css({\n visibility: \"hidden\"\n });\n } else {\n this.picker.find(\".next\").css({\n visibility: \"visible\"\n });\n }\n break;\n case 3:\n case 4:\n if (this.startDate !== -Infinity && year <= this.startDate.getUTCFullYear()) {\n this.picker.find(\".prev\").css({\n visibility: \"hidden\"\n });\n } else {\n this.picker.find(\".prev\").css({\n visibility: \"visible\"\n });\n }\n if (this.endDate !== Infinity && year >= this.endDate.getUTCFullYear()) {\n this.picker.find(\".next\").css({\n visibility: \"hidden\"\n });\n } else {\n this.picker.find(\".next\").css({\n visibility: \"visible\"\n });\n }\n break;\n }\n },\n\n click: function(e) {\n e.stopPropagation();\n e.preventDefault();\n\n if ($(e.target).hasClass(\"datepicker-close\") || $(e.target).parent().hasClass(\"datepicker-close\")) {\n this.hide();\n }\n\n let target = $(e.target).closest(\"span, td, th\");\n if (target.length == 1) {\n if (target.is(\".disabled\")) {\n this.element.trigger({\n type: \"outOfRange\",\n date: this.viewDate,\n startDate: this.startDate,\n endDate: this.endDate\n });\n return;\n }\n\n switch (target[0].nodeName.toLowerCase()) {\n case \"th\":\n switch (target[0].className) {\n case \"date-switch\":\n this.showMode(1);\n break;\n case \"prev\":\n case \"next\":\n var dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className == \"prev\" ? -1 : 1);\n switch (this.viewMode) {\n case 0:\n this.viewDate = this.moveHour(this.viewDate, dir);\n break;\n case 1:\n this.viewDate = this.moveDate(this.viewDate, dir);\n break;\n case 2:\n this.viewDate = this.moveMonth(this.viewDate, dir);\n break;\n case 3:\n case 4:\n this.viewDate = this.moveYear(this.viewDate, dir);\n break;\n }\n this.fill();\n break;\n case \"today\":\n var date = new Date();\n date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds());\n\n this.viewMode = this.startViewMode;\n this.showMode(0);\n this._setDate(date);\n break;\n }\n break;\n case \"span\":\n if (!target.is(\".disabled\")) {\n if (target.is(\".month\")) {\n if (this.minView === 3) {\n var month = target.parent().find(\"span\").index(target) || 0;\n var year = this.viewDate.getUTCFullYear(),\n day = 1,\n hours = this.viewDate.getUTCHours(),\n minutes = this.viewDate.getUTCMinutes(),\n seconds = this.viewDate.getUTCSeconds();\n this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));\n } else {\n this.viewDate.setUTCDate(1);\n var month = target.parent().find(\"span\").index(target);\n this.viewDate.setUTCMonth(month);\n this.element.trigger({\n type: \"changeMonth\",\n date: this.viewDate\n });\n }\n } else if (target.is(\".year\")) {\n if (this.minView === 4) {\n var year = parseInt(target.text(), 10) || 0;\n var month = 0,\n day = 1,\n hours = this.viewDate.getUTCHours(),\n minutes = this.viewDate.getUTCMinutes(),\n seconds = this.viewDate.getUTCSeconds();\n this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));\n } else {\n this.viewDate.setUTCDate(1);\n var year = parseInt(target.text(), 10) || 0;\n this.viewDate.setUTCFullYear(year);\n this.element.trigger({\n type: \"changeYear\",\n date: this.viewDate\n });\n }\n } else if (target.is(\".hour\")) {\n var hours = parseInt(target.text(), 10) || 0;\n var year = this.viewDate.getUTCFullYear(),\n month = this.viewDate.getUTCMonth(),\n day = this.viewDate.getUTCDate(),\n minutes = this.viewDate.getUTCMinutes(),\n seconds = this.viewDate.getUTCSeconds();\n this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));\n } else if (target.is(\".minute\")) {\n var minutes = parseInt(target.text().substr(target.text().indexOf(\":\") + 1), 10) || 0;\n var year = this.viewDate.getUTCFullYear(),\n month = this.viewDate.getUTCMonth(),\n day = this.viewDate.getUTCDate(),\n hours = this.viewDate.getUTCHours(),\n seconds = this.viewDate.getUTCSeconds();\n this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));\n }\n\n\n if (this.viewMode != 0) {\n\n\n var oldViewMode = this.viewMode;\n this.showMode(-1);\n this.fill();\n if (oldViewMode == this.viewMode && this.autoclose) {\n this.hide();\n }\n } else {\n this.fill();\n if (this.autoclose) {\n this.hide();\n }\n }\n }\n break;\n case \"td\":\n\n\n if (target.is(\".day\") && !target.is(\".disabled\")) {\n var day = parseInt(target.text(), 10) || 1;\n var year = this.viewDate.getUTCFullYear(),\n month = this.viewDate.getUTCMonth(),\n hours = this.viewDate.getUTCHours(),\n minutes = this.viewDate.getUTCMinutes(),\n seconds = this.viewDate.getUTCSeconds();\n if (target.is(\".old\")) {\n if (month === 0) {\n month = 11;\n year -= 1;\n } else {\n month -= 1;\n }\n } else if (target.is(\".new\")) {\n if (month == 11) {\n month = 0;\n year += 1;\n } else {\n month += 1;\n }\n }\n this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));\n }\n\n\n var oldViewMode = this.viewMode;\n\n\n this.showMode(-1);\n\n\n this.fill();\n if (oldViewMode == this.viewMode && this.autoclose) {\n this.hide();\n }\n break;\n }\n }\n },\n\n _setDate: function(date, which) {\n\n if (!which || which == \"date\")\n {this.date = date;}\n if (!which || which == \"view\")\n {this.viewDate = date;}\n this.fill();\n this.setValue();\n this.element.trigger({\n type: \"changeDate\",\n date: this.date\n });\n let element;\n if (this.isInput) {\n element = this.element;\n } else if (this.component) {\n element = this.element.find(\"input\");\n }\n if (element) {\n element.change();\n if (this.autoclose && (!which || which == \"date\")) {\n // this.hide();\n }\n }\n },\n\n moveHour: function(date, dir) {\n if (!dir) {return date;}\n let new_date = new Date(date.valueOf());\n dir = dir > 0 ? 1 : -1;\n new_date.setUTCHours(new_date.getUTCHours() + dir);\n return new_date;\n },\n\n moveDate: function(date, dir) {\n if (!dir) {return date;}\n let new_date = new Date(date.valueOf());\n dir = dir > 0 ? 1 : -1;\n new_date.setUTCDate(new_date.getUTCDate() + dir);\n return new_date;\n },\n\n moveMonth: function(date, dir) {\n if (!dir) {return date;}\n let new_date = new Date(date.valueOf()),\n day = new_date.getUTCDate(),\n month = new_date.getUTCMonth(),\n mag = Math.abs(dir),\n new_month, test;\n dir = dir > 0 ? 1 : -1;\n if (mag == 1) {\n test = dir == -1\n // If going back one month, make sure month is not current month\n // (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)\n ? function() {\n return new_date.getUTCMonth() == month;\n }\n // If going forward one month, make sure month is as expected\n // (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)\n : function() {\n return new_date.getUTCMonth() != new_month;\n };\n new_month = month + dir;\n new_date.setUTCMonth(new_month);\n // Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11\n if (new_month < 0 || new_month > 11)\n {new_month = (new_month + 12) % 12;}\n } else {\n // For magnitudes >1, move one month at a time...\n for (let i = 0; i < mag; i++)\n // ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...\n {new_date = this.moveMonth(new_date, dir);}\n // ...then reset the day, keeping it in the new month\n new_month = new_date.getUTCMonth();\n new_date.setUTCDate(day);\n test = function() {\n return new_month != new_date.getUTCMonth();\n };\n }\n // Common date-resetting loop -- if date is beyond end of month, make it\n // end of month\n while (test()) {\n new_date.setUTCDate(--day);\n new_date.setUTCMonth(new_month);\n }\n return new_date;\n },\n\n moveYear: function(date, dir) {\n return this.moveMonth(date, dir * 12);\n },\n\n dateWithinRange: function(date) {\n return date >= this.startDate && date <= this.endDate;\n },\n\n keydown: function(e) {\n if (!this.keyboardNavigation) {\n return true;\n }\n if (this.picker.is(\":not(:visible)\")) {\n if (e.keyCode == 27) // allow escape to hide and re-show picker\n {this.show();}\n return;\n }\n let dateChanged = false,\n day, dir, month,\n newDate, newViewDate;\n switch (e.keyCode) {\n case 27: // escape\n this.hide();\n e.preventDefault();\n break;\n case 37: // left\n case 39: // right\n if (!this.keyboardNavigation) {break;}\n dir = e.keyCode == 37 ? -1 : 1;\n if (e.ctrlKey) {\n newDate = this.moveYear(this.date, dir);\n newViewDate = this.moveYear(this.viewDate, dir);\n } else if (e.shiftKey) {\n newDate = this.moveMonth(this.date, dir);\n newViewDate = this.moveMonth(this.viewDate, dir);\n } else {\n newDate = new Date(this.date.valueOf());\n newDate.setUTCDate(this.date.getUTCDate() + dir);\n newViewDate = new Date(this.viewDate.valueOf());\n newViewDate.setUTCDate(this.viewDate.getUTCDate() + dir);\n }\n if (this.dateWithinRange(newDate)) {\n this.date = newDate;\n this.viewDate = newViewDate;\n this.setValue();\n this.update();\n e.preventDefault();\n dateChanged = true;\n }\n break;\n case 38: // up\n case 40: // down\n if (!this.keyboardNavigation) {break;}\n dir = e.keyCode == 38 ? -1 : 1;\n if (e.ctrlKey) {\n newDate = this.moveYear(this.date, dir);\n newViewDate = this.moveYear(this.viewDate, dir);\n } else if (e.shiftKey) {\n newDate = this.moveMonth(this.date, dir);\n newViewDate = this.moveMonth(this.viewDate, dir);\n } else {\n newDate = new Date(this.date.valueOf());\n newDate.setUTCDate(this.date.getUTCDate() + dir * 7);\n newViewDate = new Date(this.viewDate.valueOf());\n newViewDate.setUTCDate(this.viewDate.getUTCDate() + dir * 7);\n }\n if (this.dateWithinRange(newDate)) {\n this.date = newDate;\n this.viewDate = newViewDate;\n this.setValue();\n this.update();\n e.preventDefault();\n dateChanged = true;\n }\n break;\n case 13: // enter\n this.hide();\n e.preventDefault();\n break;\n case 9: // tab\n this.hide();\n break;\n }\n if (dateChanged) {\n this.element.trigger({\n type: \"changeDate\",\n date: this.date\n });\n let element;\n if (this.isInput) {\n element = this.element;\n } else if (this.component) {\n element = this.element.find(\"input\");\n }\n if (element) {\n element.change();\n }\n }\n },\n\n showMode: function(dir) {\n\n if (dir) {\n let newViewMode = Math.max(0, Math.min(DPGlobal.modes.length - 1, this.viewMode + dir));\n if (newViewMode >= this.minView && newViewMode <= this.maxView) {\n this.viewMode = newViewMode;\n }\n }\n\n /*\n vitalets: fixing bug of very special conditions:\n jquery 1.7.1 + webkit + show inline datepicker in bootstrap popover.\n Method show() does not set display css correctly and datepicker is not shown.\n Changed to .css('display', 'block') solve the problem.\n See https://github.com/vitalets/x-editable/issues/37\n\n In jquery 1.7.2+ everything works fine.\n */\n // this.picker.find('>div').hide().filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName).show();\n this.picker.find(\">div\").hide().filter(`.datepicker-${DPGlobal.modes[this.viewMode].clsName}`).css(\"display\", \"block\");\n this.updateNavArrows();\n },\n\n changeViewDate: function(date) {\n this.date = date;\n this.viewDate = date;\n this.fill();\n },\n\n reset: function(e) {\n this._setDate(null, \"date\");\n }\n };\n\n $.fn.fdatepicker = function(option) {\n let args = Array(...arguments);\n args.shift();\n return this.each(function() {\n let $this = $(this),\n data = $this.data(\"datepicker\"),\n options = typeof option === \"object\" && option;\n if (!data) {\n $this.data(\"datepicker\", (data = new Datepicker(this, $.extend({}, $.fn.fdatepicker.defaults, options))));\n }\n if (typeof option === \"string\" && typeof data[option] === \"function\") {\n data[option](...args);\n }\n });\n };\n\n $.fn.fdatepicker.defaults = {\n onRender: function(date) {\n return \"\";\n }\n };\n $.fn.fdatepicker.Constructor = Datepicker;\n var dates = $.fn.fdatepicker.dates = {\n \"en\": {\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\"],\n daysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"],\n daysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n monthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n today: \"Today\",\n titleFormat: \"MM yyyy\"\n }\n };\n\n var DPGlobal = {\n modes: [{\n clsName: \"minutes\",\n navFnc: \"Hours\",\n navStep: 1\n }, {\n clsName: \"hours\",\n navFnc: \"Date\",\n navStep: 1\n }, {\n clsName: \"days\",\n navFnc: \"Month\",\n navStep: 1\n }, {\n clsName: \"months\",\n navFnc: \"FullYear\",\n navStep: 1\n }, {\n clsName: \"years\",\n navFnc: \"FullYear\",\n navStep: 10\n }],\n isLeapYear: function(year) {\n return (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0));\n },\n getDaysInMonth: function(year, month) {\n return [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];\n },\n validParts: /hh?|ii?|ss?|dd?|mm?|MM?|yy(?:yy)?/g,\n nonpunctuation: /[^ -\\/:-@\\[\\u3400-\\u9fff-`{-~\\t\\n\\r]+/g,\n parseFormat: function(format) {\n // IE treats \\0 as a string end in inputs (truncating the value),\n // so it's a bad format delimiter, anyway\n let separators = format.replace(this.validParts, \"\\0\").split(\"\\0\"),\n parts = format.match(this.validParts);\n if (!separators || !separators.length || !parts || parts.length === 0) {\n throw new Error(\"Invalid date format.\");\n }\n this.formatText = format;\n return {\n separators: separators,\n parts: parts\n };\n },\n parseDate: function(date, format, language) {\n if (date instanceof Date) {return new Date(date.valueOf() - date.getTimezoneOffset() * 60000);}\n if (/^\\d{4}\\-\\d{1,2}\\-\\d{1,2}$/.test(date)) {\n format = this.parseFormat(\"yyyy-mm-dd\");\n }\n if (/^\\d{4}\\-\\d{1,2}\\-\\d{1,2}[T ]\\d{1,2}\\:\\d{1,2}$/.test(date)) {\n format = this.parseFormat(\"yyyy-mm-dd hh:ii\");\n }\n if (/^\\d{4}\\-\\d{1,2}\\-\\d{1,2}[T ]\\d{1,2}\\:\\d{1,2}\\:\\d{1,2}[Z]{0,1}$/.test(date)) {\n format = this.parseFormat(\"yyyy-mm-dd hh:ii:ss\");\n }\n if (/^[-+]\\d+[dmwy]([\\s,]+[-+]\\d+[dmwy])*$/.test(date)) {\n var part_re = /([-+]\\d+)([dmwy])/,\n parts = date.match(/([-+]\\d+)([dmwy])/g),\n part, dir;\n date = new Date();\n for (var i = 0; i < parts.length; i++) {\n part = part_re.exec(parts[i]);\n dir = parseInt(part[1]);\n switch (part[2]) {\n case \"d\":\n date.setUTCDate(date.getUTCDate() + dir);\n break;\n case \"m\":\n date = Datetimepicker.prototype.moveMonth.call(Datetimepicker.prototype, date, dir);\n break;\n case \"w\":\n date.setUTCDate(date.getUTCDate() + dir * 7);\n break;\n case \"y\":\n date = Datetimepicker.prototype.moveYear.call(Datetimepicker.prototype, date, dir);\n break;\n }\n }\n return UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());\n }\n var parts = date && date.match(this.nonpunctuation) || [],\n date = new Date(),\n parsed = {},\n setters_order = [\"hh\", \"h\", \"ii\", \"i\", \"ss\", \"s\", \"yyyy\", \"yy\", \"M\", \"MM\", \"m\", \"mm\", \"d\", \"dd\"],\n setters_map = {\n hh: function(d, v) {\n return d.setUTCHours(v);\n },\n h: function(d, v) {\n return d.setUTCHours(v);\n },\n ii: function(d, v) {\n return d.setUTCMinutes(v);\n },\n i: function(d, v) {\n return d.setUTCMinutes(v);\n },\n ss: function(d, v) {\n return d.setUTCSeconds(v);\n },\n s: function(d, v) {\n return d.setUTCSeconds(v);\n },\n yyyy: function(d, v) {\n return d.setUTCFullYear(v);\n },\n yy: function(d, v) {\n return d.setUTCFullYear(2000 + v);\n },\n m: function(d, v) {\n v -= 1;\n while (v < 0) {v += 12;}\n v %= 12;\n d.setUTCMonth(v);\n while (d.getUTCMonth() != v)\n {d.setUTCDate(d.getUTCDate() - 1);}\n return d;\n },\n d: function(d, v) {\n return d.setUTCDate(v);\n }\n },\n val, filtered, part;\n setters_map.M = setters_map.MM = setters_map.mm = setters_map.m;\n setters_map.dd = setters_map.d;\n date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0); // date.getHours(), date.getMinutes(), date.getSeconds());\n if (parts.length == format.parts.length) {\n for (var i = 0, cnt = format.parts.length; i < cnt; i++) {\n val = parseInt(parts[i], 10);\n part = format.parts[i];\n if (isNaN(val)) {\n switch (part) {\n case \"MM\":\n filtered = $(dates[language].months).filter(function() {\n let m = this.slice(0, parts[i].length),\n p = parts[i].slice(0, m.length);\n return m == p;\n });\n val = $.inArray(filtered[0], dates[language].months) + 1;\n break;\n case \"M\":\n filtered = $(dates[language].monthsShort).filter(function() {\n let m = this.slice(0, parts[i].length),\n p = parts[i].slice(0, m.length);\n return m == p;\n });\n val = $.inArray(filtered[0], dates[language].monthsShort) + 1;\n break;\n }\n }\n parsed[part] = val;\n }\n for (var i = 0, s; i < setters_order.length; i++) {\n s = setters_order[i];\n if (s in parsed && !isNaN(parsed[s]))\n {setters_map[s](date, parsed[s])}\n }\n }\n return date;\n },\n formatDate: function(date, format, language) {\n if (date == null) {\n return \"\";\n }\n let val = {\n h: date.getUTCHours(),\n i: date.getUTCMinutes(),\n s: date.getUTCSeconds(),\n d: date.getUTCDate(),\n m: date.getUTCMonth() + 1,\n M: dates[language].monthsShort[date.getUTCMonth()],\n MM: dates[language].months[date.getUTCMonth()],\n yy: date.getUTCFullYear().toString().substring(2),\n yyyy: date.getUTCFullYear()\n };\n val.hh = (val.h < 10 ? \"0\" : \"\") + val.h;\n val.ii = (val.i < 10 ? \"0\" : \"\") + val.i;\n val.ss = (val.s < 10 ? \"0\" : \"\") + val.s;\n val.dd = (val.d < 10 ? \"0\" : \"\") + val.d;\n val.mm = (val.m < 10 ? \"0\" : \"\") + val.m;\n var date = [],\n seps = $.extend([], format.separators);\n for (let i = 0, cnt = format.parts.length; i < cnt; i++) {\n if (seps.length)\n {date.push(seps.shift())}\n date.push(val[format.parts[i]]);\n }\n return date.join(\"\");\n },\n convertViewMode: function(viewMode) {\n switch (viewMode) {\n case 4:\n case \"decade\":\n viewMode = 4;\n break;\n case 3:\n case \"year\":\n viewMode = 3;\n break;\n case 2:\n case \"month\":\n viewMode = 2;\n break;\n case 1:\n case \"day\":\n viewMode = 1;\n break;\n case 0:\n case \"hour\":\n viewMode = 0;\n break;\n }\n\n return viewMode;\n },\n headTemplate: function(leftArrow, rightArrow) {return (`${\"\" +\n \"\" +\n ''}${leftArrow}` +\n \"\" +\n `${rightArrow}` +\n \"\" +\n \"\")},\n contTemplate: '',\n footTemplate: ''\n };\n DPGlobal.template = function(leftArrow, rightArrow, closeIcon) {return (`${'
    ' +\n '
    ' +\n ''}${\n DPGlobal.headTemplate(leftArrow, rightArrow)\n }${DPGlobal.contTemplate\n }${DPGlobal.footTemplate\n }
    ` +\n \"
    \" +\n \"
    \" +\n `${\n DPGlobal.headTemplate(leftArrow, rightArrow)\n }${DPGlobal.contTemplate\n }${DPGlobal.footTemplate\n }
    ` +\n \"
    \" +\n \"
    \" +\n `${\n DPGlobal.headTemplate(leftArrow, rightArrow)\n }${\n DPGlobal.footTemplate\n }
    ` +\n \"
    \" +\n \"
    \" +\n `${\n DPGlobal.headTemplate(leftArrow, rightArrow)\n }${DPGlobal.contTemplate\n }${DPGlobal.footTemplate\n }
    ` +\n \"
    \" +\n \"
    \" +\n `${\n DPGlobal.headTemplate(leftArrow, rightArrow)\n }${DPGlobal.contTemplate\n }${DPGlobal.footTemplate\n }
    ` +\n \"
    \" +\n `${closeIcon}` +\n \"
    \")};\n\n $.fn.fdatepicker.DPGlobal = DPGlobal;\n\n}(window.jQuery));\n","/* eslint-disable */\n\n/*\n Modified file from the original tribute.js\n Adding inside click event the conditional if the li element has no disabled-tribute-element class name. if true, then it must continue with normal behaviour.\n*/\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.Tribute = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i',\n post: _this2.current.collection.searchOpts.post || '',\n skip: _this2.current.collection.searchOpts.skip,\n extract: function extract(el) {\n if (typeof _this2.current.collection.lookup === 'string') {\n return el[_this2.current.collection.lookup];\n } else if (typeof _this2.current.collection.lookup === 'function') {\n return _this2.current.collection.lookup(el, _this2.current.mentionText);\n } else {\n throw new Error('Invalid lookup attribute, lookup must be string or function.');\n }\n }\n });\n\n if (_this2.current.collection.menuItemLimit) {\n items = items.slice(0, _this2.current.collection.menuItemLimit);\n }\n\n _this2.current.filteredItems = items;\n\n var ul = _this2.menu.querySelector('ul');\n\n _this2.range.positionMenuAtCaret(scrollTo);\n\n if (!items.length) {\n var noMatchEvent = new CustomEvent('tribute-no-match', {\n detail: _this2.menu\n });\n\n _this2.current.element.dispatchEvent(noMatchEvent);\n\n if (typeof _this2.current.collection.noMatchTemplate === 'function' && !_this2.current.collection.noMatchTemplate() || !_this2.current.collection.noMatchTemplate) {\n _this2.hideMenu();\n } else {\n typeof _this2.current.collection.noMatchTemplate === 'function' ? ul.innerHTML = _this2.current.collection.noMatchTemplate() : ul.innerHTML = _this2.current.collection.noMatchTemplate;\n }\n\n return;\n }\n\n ul.innerHTML = '';\n\n var fragment = _this2.range.getDocument().createDocumentFragment();\n\n items.forEach(function (item, index) {\n var li = _this2.range.getDocument().createElement('li');\n li.setAttribute('role', 'option');\n li.setAttribute('data-index', index);\n li.addEventListener('mousemove', function (e) {\n var _this2$_findLiTarget = _this2._findLiTarget(e.target),\n _this2$_findLiTarget2 = _slicedToArray(_this2$_findLiTarget, 2),\n li = _this2$_findLiTarget2[0],\n index = _this2$_findLiTarget2[1];\n\n if (e.movementY !== 0) {\n _this2.events.setActiveLi(index);\n }\n });\n\n if (_this2.menuSelected === index) {\n li.className = _this2.current.collection.selectClass;\n }\n\n li.innerHTML = _this2.current.collection.menuItemTemplate(item);\n fragment.appendChild(li);\n });\n ul.appendChild(fragment);\n };\n\n if (typeof this.current.collection.values === 'function') {\n this.current.collection.values(this.current.mentionText, processValues);\n } else {\n processValues(this.current.collection.values);\n }\n }\n }, {\n key: \"_findLiTarget\",\n value: function _findLiTarget(el) {\n if (!el) return [];\n var index = el.getAttribute('data-index');\n return !index ? this._findLiTarget(el.parentNode) : [el, index];\n }\n }, {\n key: \"showMenuForCollection\",\n value: function showMenuForCollection(element, collectionIndex) {\n if (element !== document.activeElement) {\n this.placeCaretAtEnd(element);\n }\n\n this.current.collection = this.collection[collectionIndex || 0];\n this.current.externalTrigger = true;\n this.current.element = element;\n if (element.isContentEditable) this.insertTextAtCursor(this.current.collection.trigger);else this.insertAtCaret(element, this.current.collection.trigger);\n this.showMenuFor(element);\n } // TODO: make sure this works for inputs/textareas\n\n }, {\n key: \"placeCaretAtEnd\",\n value: function placeCaretAtEnd(el) {\n el.focus();\n\n if (typeof window.getSelection != \"undefined\" && typeof document.createRange != \"undefined\") {\n var range = document.createRange();\n range.selectNodeContents(el);\n range.collapse(false);\n var sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n } else if (typeof document.body.createTextRange != \"undefined\") {\n var textRange = document.body.createTextRange();\n textRange.moveToElementText(el);\n textRange.collapse(false);\n textRange.select();\n }\n } // for contenteditable\n\n }, {\n key: \"insertTextAtCursor\",\n value: function insertTextAtCursor(text) {\n var sel, range, html;\n sel = window.getSelection();\n range = sel.getRangeAt(0);\n range.deleteContents();\n var textNode = document.createTextNode(text);\n range.insertNode(textNode);\n range.selectNodeContents(textNode);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n } // for regular inputs\n\n }, {\n key: \"insertAtCaret\",\n value: function insertAtCaret(textarea, text) {\n var scrollPos = textarea.scrollTop;\n var caretPos = textarea.selectionStart;\n var front = textarea.value.substring(0, caretPos);\n var back = textarea.value.substring(textarea.selectionEnd, textarea.value.length);\n textarea.value = front + text + back;\n caretPos = caretPos + text.length;\n textarea.selectionStart = caretPos;\n textarea.selectionEnd = caretPos;\n textarea.focus();\n textarea.scrollTop = scrollPos;\n }\n }, {\n key: \"hideMenu\",\n value: function hideMenu() {\n if (this.menu) {\n this.menu.style.cssText = 'display: none;';\n this.isActive = false;\n this.menuSelected = 0;\n this.current = {};\n }\n }\n }, {\n key: \"selectItemAtIndex\",\n value: function selectItemAtIndex(index, originalEvent) {\n index = parseInt(index);\n if (typeof index !== 'number' || isNaN(index)) return;\n var item = this.current.filteredItems[index];\n var content = this.current.collection.selectTemplate(item);\n if (content !== null) this.replaceText(content, originalEvent, item);\n }\n }, {\n key: \"replaceText\",\n value: function replaceText(content, originalEvent, item) {\n this.range.replaceTriggerText(content, true, true, originalEvent, item);\n }\n }, {\n key: \"_append\",\n value: function _append(collection, newValues, replace) {\n if (typeof collection.values === 'function') {\n throw new Error('Unable to append to values, as it is a function.');\n } else if (!replace) {\n collection.values = collection.values.concat(newValues);\n } else {\n collection.values = newValues;\n }\n }\n }, {\n key: \"append\",\n value: function append(collectionIndex, newValues, replace) {\n var index = parseInt(collectionIndex);\n if (typeof index !== 'number') throw new Error('please provide an index for the collection to update.');\n var collection = this.collection[index];\n\n this._append(collection, newValues, replace);\n }\n }, {\n key: \"appendCurrent\",\n value: function appendCurrent(newValues, replace) {\n if (this.isActive) {\n this._append(this.current.collection, newValues, replace);\n } else {\n throw new Error('No active state. Please use append instead and pass an index.');\n }\n }\n }, {\n key: \"detach\",\n value: function detach(el) {\n if (!el) {\n throw new Error('[Tribute] Must pass in a DOM node or NodeList.');\n } // Check if it is a jQuery collection\n\n\n if (typeof jQuery !== 'undefined' && el instanceof jQuery) {\n el = el.get();\n } // Is el an Array/Array-like object?\n\n\n if (el.constructor === NodeList || el.constructor === HTMLCollection || el.constructor === Array) {\n var length = el.length;\n\n for (var i = 0; i < length; ++i) {\n this._detach(el[i]);\n }\n } else {\n this._detach(el);\n }\n }\n }, {\n key: \"_detach\",\n value: function _detach(el) {\n var _this3 = this;\n\n this.events.unbind(el);\n\n if (el.tributeMenu) {\n this.menuEvents.unbind(el.tributeMenu);\n }\n\n setTimeout(function () {\n el.removeAttribute('data-tribute');\n _this3.isActive = false;\n\n if (el.tributeMenu) {\n el.tributeMenu.remove();\n }\n });\n }\n }], [{\n key: \"defaultSelectTemplate\",\n value: function defaultSelectTemplate(item) {\n if (typeof item === 'undefined') return null;\n\n if (this.range.isContentEditable(this.current.element)) {\n return '' + (this.current.collection.trigger + item.original[this.current.collection.fillAttr]) + '';\n }\n\n return this.current.collection.trigger + item.original[this.current.collection.fillAttr];\n }\n }, {\n key: \"defaultMenuItemTemplate\",\n value: function defaultMenuItemTemplate(matchItem) {\n return matchItem.string;\n }\n }, {\n key: \"inputTypes\",\n value: function inputTypes() {\n return ['TEXTAREA', 'INPUT'];\n }\n }]);\n\n return Tribute;\n}();\n\nvar _default = Tribute;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n\n},{\"./TributeEvents\":2,\"./TributeMenuEvents\":3,\"./TributeRange\":4,\"./TributeSearch\":5,\"./utils\":7}],2:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar TributeEvents =\n/*#__PURE__*/\nfunction () {\n function TributeEvents(tribute) {\n _classCallCheck(this, TributeEvents);\n\n this.tribute = tribute;\n this.tribute.events = this;\n }\n\n _createClass(TributeEvents, [{\n key: \"bind\",\n value: function bind(element) {\n element.boundKeydown = this.keydown.bind(element, this);\n element.boundKeyup = this.keyup.bind(element, this);\n element.boundInput = this.input.bind(element, this);\n element.addEventListener('keydown', element.boundKeydown, false);\n element.addEventListener('keyup', element.boundKeyup, false);\n element.addEventListener('input', element.boundInput, false);\n }\n }, {\n key: \"unbind\",\n value: function unbind(element) {\n element.removeEventListener('keydown', element.boundKeydown, false);\n element.removeEventListener('keyup', element.boundKeyup, false);\n element.removeEventListener('input', element.boundInput, false);\n delete element.boundKeydown;\n delete element.boundKeyup;\n delete element.boundInput;\n }\n }, {\n key: \"keydown\",\n value: function keydown(instance, event) {\n if (instance.shouldDeactivate(event)) {\n instance.tribute.isActive = false;\n instance.tribute.hideMenu();\n }\n\n var element = this;\n instance.commandEvent = false;\n TributeEvents.keys().forEach(function (o) {\n if (o.key === event.keyCode) {\n instance.commandEvent = true;\n instance.callbacks()[o.value.toLowerCase()](event, element);\n }\n });\n }\n }, {\n key: \"input\",\n value: function input(instance, event) {\n instance.inputEvent = true;\n instance.keyup.call(this, instance, event);\n }\n }, {\n key: \"click\",\n value: function click(instance, event) {\n var tribute = instance.tribute;\n\n if (tribute.menu && tribute.menu.contains(event.target)) {\n var li = event.target;\n event.preventDefault();\n event.stopPropagation();\n\n while (li.nodeName.toLowerCase() !== 'li') {\n li = li.parentNode;\n\n if (!li || li === tribute.menu) {\n throw new Error('cannot find the
  • container for the click');\n }\n }\n\n if (li.getElementsByClassName(\"disabled-tribute-element\")[0]==undefined){\n tribute.selectItemAtIndex(li.getAttribute('data-index'), event);\n tribute.hideMenu(); // TODO: should fire with externalTrigger and target is outside of menu\n }\n } else if (tribute.current.element && !tribute.current.externalTrigger) {\n tribute.current.externalTrigger = false;\n setTimeout(function () {\n return tribute.hideMenu();\n });\n }\n }\n }, {\n key: \"keyup\",\n value: function keyup(instance, event) {\n if (instance.inputEvent) {\n instance.inputEvent = false;\n }\n\n instance.updateSelection(this);\n if (event.keyCode === 27) return;\n\n if (!instance.tribute.allowSpaces && instance.tribute.hasTrailingSpace) {\n instance.tribute.hasTrailingSpace = false;\n instance.commandEvent = true;\n instance.callbacks()[\"space\"](event, this);\n return;\n }\n\n if (!instance.tribute.isActive) {\n if (instance.tribute.autocompleteMode) {\n instance.callbacks().triggerChar(event, this, '');\n } else {\n var keyCode = instance.getKeyCode(instance, this, event);\n if (isNaN(keyCode) || !keyCode) return;\n var trigger = instance.tribute.triggers().find(function (trigger) {\n return trigger.charCodeAt(0) === keyCode;\n });\n\n if (typeof trigger !== 'undefined') {\n instance.callbacks().triggerChar(event, this, trigger);\n }\n }\n }\n\n if ((instance.tribute.current.trigger || instance.tribute.autocompleteMode) && instance.commandEvent === false || instance.tribute.isActive && event.keyCode === 8) {\n instance.tribute.showMenuFor(this, true);\n }\n }\n }, {\n key: \"shouldDeactivate\",\n value: function shouldDeactivate(event) {\n if (!this.tribute.isActive) return false;\n\n if (this.tribute.current.mentionText.length === 0) {\n var eventKeyPressed = false;\n TributeEvents.keys().forEach(function (o) {\n if (event.keyCode === o.key) eventKeyPressed = true;\n });\n return !eventKeyPressed;\n }\n\n return false;\n }\n }, {\n key: \"getKeyCode\",\n value: function getKeyCode(instance, el, event) {\n var _char;\n\n var tribute = instance.tribute;\n var info = tribute.range.getTriggerInfo(false, tribute.hasTrailingSpace, true, tribute.allowSpaces, tribute.autocompleteMode);\n\n if (info) {\n return info.mentionTriggerChar.charCodeAt(0);\n } else {\n return false;\n }\n }\n }, {\n key: \"updateSelection\",\n value: function updateSelection(el) {\n this.tribute.current.element = el;\n var info = this.tribute.range.getTriggerInfo(false, this.tribute.hasTrailingSpace, true, this.tribute.allowSpaces, this.tribute.autocompleteMode);\n\n if (info) {\n this.tribute.current.selectedPath = info.mentionSelectedPath;\n this.tribute.current.mentionText = info.mentionText;\n this.tribute.current.selectedOffset = info.mentionSelectedOffset;\n }\n }\n }, {\n key: \"callbacks\",\n value: function callbacks() {\n var _this = this;\n\n return {\n triggerChar: function triggerChar(e, el, trigger) {\n var tribute = _this.tribute;\n tribute.current.trigger = trigger;\n var collectionItem = tribute.collection.find(function (item) {\n return item.trigger === trigger;\n });\n tribute.current.collection = collectionItem;\n if (tribute.inputEvent) tribute.showMenuFor(el, true);\n },\n enter: function enter(e, el) {\n // choose selection\n if (_this.tribute.isActive && _this.tribute.current.filteredItems) {\n e.preventDefault();\n e.stopPropagation();\n setTimeout(function () {\n _this.tribute.selectItemAtIndex(_this.tribute.menuSelected, e);\n\n _this.tribute.hideMenu();\n }, 0);\n }\n },\n escape: function escape(e, el) {\n if (_this.tribute.isActive) {\n e.preventDefault();\n e.stopPropagation();\n _this.tribute.isActive = false;\n\n _this.tribute.hideMenu();\n }\n },\n tab: function tab(e, el) {\n // choose first match\n _this.callbacks().enter(e, el);\n },\n space: function space(e, el) {\n if (_this.tribute.isActive) {\n if (_this.tribute.spaceSelectsMatch) {\n _this.callbacks().enter(e, el);\n } else if (!_this.tribute.allowSpaces) {\n e.stopPropagation();\n setTimeout(function () {\n _this.tribute.hideMenu();\n\n _this.tribute.isActive = false;\n }, 0);\n }\n }\n },\n up: function up(e, el) {\n // navigate up ul\n if (_this.tribute.isActive && _this.tribute.current.filteredItems) {\n e.preventDefault();\n e.stopPropagation();\n var count = _this.tribute.current.filteredItems.length,\n selected = _this.tribute.menuSelected;\n\n if (count > selected && selected > 0) {\n _this.tribute.menuSelected--;\n\n _this.setActiveLi();\n } else if (selected === 0) {\n _this.tribute.menuSelected = count - 1;\n\n _this.setActiveLi();\n\n _this.tribute.menu.scrollTop = _this.tribute.menu.scrollHeight;\n }\n }\n },\n down: function down(e, el) {\n // navigate down ul\n if (_this.tribute.isActive && _this.tribute.current.filteredItems) {\n e.preventDefault();\n e.stopPropagation();\n var count = _this.tribute.current.filteredItems.length - 1,\n selected = _this.tribute.menuSelected;\n\n if (count > selected) {\n _this.tribute.menuSelected++;\n\n _this.setActiveLi();\n } else if (count === selected) {\n _this.tribute.menuSelected = 0;\n\n _this.setActiveLi();\n\n _this.tribute.menu.scrollTop = 0;\n }\n }\n },\n \"delete\": function _delete(e, el) {\n if (_this.tribute.isActive && _this.tribute.current.mentionText.length < 1) {\n _this.tribute.hideMenu();\n } else if (_this.tribute.isActive) {\n _this.tribute.showMenuFor(el);\n }\n }\n };\n }\n }, {\n key: \"setActiveLi\",\n value: function setActiveLi(index) {\n var lis = this.tribute.menu.querySelectorAll('li'),\n length = lis.length >>> 0;\n if (index) this.tribute.menuSelected = parseInt(index);\n\n for (var i = 0; i < length; i++) {\n var li = lis[i];\n\n if (i === this.tribute.menuSelected) {\n li.classList.add(this.tribute.current.collection.selectClass);\n var liClientRect = li.getBoundingClientRect();\n var menuClientRect = this.tribute.menu.getBoundingClientRect();\n\n if (liClientRect.bottom > menuClientRect.bottom) {\n var scrollDistance = liClientRect.bottom - menuClientRect.bottom;\n this.tribute.menu.scrollTop += scrollDistance;\n } else if (liClientRect.top < menuClientRect.top) {\n var _scrollDistance = menuClientRect.top - liClientRect.top;\n\n this.tribute.menu.scrollTop -= _scrollDistance;\n }\n } else {\n li.classList.remove(this.tribute.current.collection.selectClass);\n }\n }\n }\n }, {\n key: \"getFullHeight\",\n value: function getFullHeight(elem, includeMargin) {\n var height = elem.getBoundingClientRect().height;\n\n if (includeMargin) {\n var style = elem.currentStyle || window.getComputedStyle(elem);\n return height + parseFloat(style.marginTop) + parseFloat(style.marginBottom);\n }\n\n return height;\n }\n }], [{\n key: \"keys\",\n value: function keys() {\n return [{\n key: 9,\n value: 'TAB'\n }, {\n key: 8,\n value: 'DELETE'\n }, {\n key: 13,\n value: 'ENTER'\n }, {\n key: 27,\n value: 'ESCAPE'\n }, {\n key: 32,\n value: 'SPACE'\n }, {\n key: 38,\n value: 'UP'\n }, {\n key: 40,\n value: 'DOWN'\n }];\n }\n }]);\n\n return TributeEvents;\n}();\n\nvar _default = TributeEvents;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n\n},{}],3:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar TributeMenuEvents =\n/*#__PURE__*/\nfunction () {\n function TributeMenuEvents(tribute) {\n _classCallCheck(this, TributeMenuEvents);\n\n this.tribute = tribute;\n this.tribute.menuEvents = this;\n this.menu = this.tribute.menu;\n }\n\n _createClass(TributeMenuEvents, [{\n key: \"bind\",\n value: function bind(menu) {\n var _this = this;\n\n this.menuClickEvent = this.tribute.events.click.bind(null, this);\n this.menuContainerScrollEvent = this.debounce(function () {\n if (_this.tribute.isActive) {\n _this.tribute.showMenuFor(_this.tribute.current.element, false);\n }\n }, 300, false);\n this.windowResizeEvent = this.debounce(function () {\n if (_this.tribute.isActive) {\n _this.tribute.range.positionMenuAtCaret(true);\n }\n }, 300, false); // fixes IE11 issues with mousedown\n\n this.tribute.range.getDocument().addEventListener('MSPointerDown', this.menuClickEvent, false);\n this.tribute.range.getDocument().addEventListener('mousedown', this.menuClickEvent, false);\n window.addEventListener('resize', this.windowResizeEvent);\n\n if (this.menuContainer) {\n this.menuContainer.addEventListener('scroll', this.menuContainerScrollEvent, false);\n } else {\n window.addEventListener('scroll', this.menuContainerScrollEvent);\n }\n }\n }, {\n key: \"unbind\",\n value: function unbind(menu) {\n this.tribute.range.getDocument().removeEventListener('mousedown', this.menuClickEvent, false);\n this.tribute.range.getDocument().removeEventListener('MSPointerDown', this.menuClickEvent, false);\n window.removeEventListener('resize', this.windowResizeEvent);\n\n if (this.menuContainer) {\n this.menuContainer.removeEventListener('scroll', this.menuContainerScrollEvent, false);\n } else {\n window.removeEventListener('scroll', this.menuContainerScrollEvent);\n }\n }\n }, {\n key: \"debounce\",\n value: function debounce(func, wait, immediate) {\n var _this2 = this,\n _arguments = arguments;\n\n var timeout;\n return function () {\n var context = _this2,\n args = _arguments;\n\n var later = function later() {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n }\n }]);\n\n return TributeMenuEvents;\n}();\n\nvar _default = TributeMenuEvents;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n\n},{}],4:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// Thanks to https://github.com/jeff-collins/ment.io\nvar TributeRange =\n/*#__PURE__*/\nfunction () {\n function TributeRange(tribute) {\n _classCallCheck(this, TributeRange);\n\n this.tribute = tribute;\n this.tribute.range = this;\n }\n\n _createClass(TributeRange, [{\n key: \"getDocument\",\n value: function getDocument() {\n var iframe;\n\n if (this.tribute.current.collection) {\n iframe = this.tribute.current.collection.iframe;\n }\n\n if (!iframe) {\n return document;\n }\n\n return iframe.contentWindow.document;\n }\n }, {\n key: \"positionMenuAtCaret\",\n value: function positionMenuAtCaret(scrollTo) {\n var _this = this;\n\n var context = this.tribute.current,\n coordinates;\n var info = this.getTriggerInfo(false, this.tribute.hasTrailingSpace, true, this.tribute.allowSpaces, this.tribute.autocompleteMode);\n\n if (typeof info !== 'undefined') {\n if (!this.tribute.positionMenu) {\n this.tribute.menu.style.cssText = \"display: block;\";\n return;\n }\n\n if (!this.isContentEditable(context.element)) {\n coordinates = this.getTextAreaOrInputUnderlinePosition(this.tribute.current.element, info.mentionPosition);\n } else {\n coordinates = this.getContentEditableCaretPosition(info.mentionPosition);\n }\n\n this.tribute.menu.style.cssText = \"top: \".concat(coordinates.top, \"px;\\n left: \").concat(coordinates.left, \"px;\\n right: \").concat(coordinates.right, \"px;\\n bottom: \").concat(coordinates.bottom, \"px;\\n position: absolute;\\n display: block;\");\n\n if (coordinates.left === 'auto') {\n this.tribute.menu.style.left = 'auto';\n }\n\n if (coordinates.top === 'auto') {\n this.tribute.menu.style.top = 'auto';\n }\n\n if (scrollTo) this.scrollIntoView();\n window.setTimeout(function () {\n var menuDimensions = {\n width: _this.tribute.menu.offsetWidth,\n height: _this.tribute.menu.offsetHeight\n };\n\n var menuIsOffScreen = _this.isMenuOffScreen(coordinates, menuDimensions);\n\n var menuIsOffScreenHorizontally = window.innerWidth > menuDimensions.width && (menuIsOffScreen.left || menuIsOffScreen.right);\n var menuIsOffScreenVertically = window.innerHeight > menuDimensions.height && (menuIsOffScreen.top || menuIsOffScreen.bottom);\n\n if (menuIsOffScreenHorizontally || menuIsOffScreenVertically) {\n _this.tribute.menu.style.cssText = 'display: none';\n\n _this.positionMenuAtCaret(scrollTo);\n }\n }, 0);\n } else {\n this.tribute.menu.style.cssText = 'display: none';\n }\n }\n }, {\n key: \"selectElement\",\n value: function selectElement(targetElement, path, offset) {\n var range;\n var elem = targetElement;\n\n if (path) {\n for (var i = 0; i < path.length; i++) {\n elem = elem.childNodes[path[i]];\n\n if (elem === undefined) {\n return;\n }\n\n while (elem.length < offset) {\n offset -= elem.length;\n elem = elem.nextSibling;\n }\n\n if (elem.childNodes.length === 0 && !elem.length) {\n elem = elem.previousSibling;\n }\n }\n }\n\n var sel = this.getWindowSelection();\n range = this.getDocument().createRange();\n range.setStart(elem, offset);\n range.setEnd(elem, offset);\n range.collapse(true);\n\n try {\n sel.removeAllRanges();\n } catch (error) {}\n\n sel.addRange(range);\n targetElement.focus();\n }\n }, {\n key: \"replaceTriggerText\",\n value: function replaceTriggerText(text, requireLeadingSpace, hasTrailingSpace, originalEvent, item) {\n var info = this.getTriggerInfo(true, hasTrailingSpace, requireLeadingSpace, this.tribute.allowSpaces, this.tribute.autocompleteMode);\n\n if (info !== undefined) {\n var context = this.tribute.current;\n var replaceEvent = new CustomEvent('tribute-replaced', {\n detail: {\n item: item,\n instance: context,\n context: info,\n event: originalEvent\n }\n });\n\n if (!this.isContentEditable(context.element)) {\n var myField = this.tribute.current.element;\n var textSuffix = typeof this.tribute.replaceTextSuffix == 'string' ? this.tribute.replaceTextSuffix : ' ';\n text += textSuffix;\n var startPos = info.mentionPosition;\n var endPos = info.mentionPosition + info.mentionText.length + textSuffix.length;\n myField.value = myField.value.substring(0, startPos) + text + myField.value.substring(endPos, myField.value.length);\n myField.selectionStart = startPos + text.length;\n myField.selectionEnd = startPos + text.length;\n } else {\n // add a space to the end of the pasted text\n var _textSuffix = typeof this.tribute.replaceTextSuffix == 'string' ? this.tribute.replaceTextSuffix : '\\xA0';\n\n text += _textSuffix;\n this.pasteHtml(text, info.mentionPosition, info.mentionPosition + info.mentionText.length + !this.tribute.autocompleteMode);\n }\n\n context.element.dispatchEvent(replaceEvent);\n }\n }\n }, {\n key: \"pasteHtml\",\n value: function pasteHtml(html, startPos, endPos) {\n var range, sel;\n sel = this.getWindowSelection();\n range = this.getDocument().createRange();\n range.setStart(sel.anchorNode, startPos);\n range.setEnd(sel.anchorNode, endPos);\n range.deleteContents();\n var el = this.getDocument().createElement('div');\n el.innerHTML = html;\n var frag = this.getDocument().createDocumentFragment(),\n node,\n lastNode;\n\n while (node = el.firstChild) {\n lastNode = frag.appendChild(node);\n }\n\n range.insertNode(frag); // Preserve the selection\n\n if (lastNode) {\n range = range.cloneRange();\n range.setStartAfter(lastNode);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n }\n }, {\n key: \"getWindowSelection\",\n value: function getWindowSelection() {\n if (this.tribute.collection.iframe) {\n return this.tribute.collection.iframe.contentWindow.getSelection();\n }\n\n return window.getSelection();\n }\n }, {\n key: \"getNodePositionInParent\",\n value: function getNodePositionInParent(element) {\n if (element.parentNode === null) {\n return 0;\n }\n\n for (var i = 0; i < element.parentNode.childNodes.length; i++) {\n var node = element.parentNode.childNodes[i];\n\n if (node === element) {\n return i;\n }\n }\n }\n }, {\n key: \"getContentEditableSelectedPath\",\n value: function getContentEditableSelectedPath(ctx) {\n var sel = this.getWindowSelection();\n var selected = sel.anchorNode;\n var path = [];\n var offset;\n\n if (selected != null) {\n var i;\n var ce = selected.contentEditable;\n\n while (selected !== null && ce !== 'true') {\n i = this.getNodePositionInParent(selected);\n path.push(i);\n selected = selected.parentNode;\n\n if (selected !== null) {\n ce = selected.contentEditable;\n }\n }\n\n path.reverse(); // getRangeAt may not exist, need alternative\n\n offset = sel.getRangeAt(0).startOffset;\n return {\n selected: selected,\n path: path,\n offset: offset\n };\n }\n }\n }, {\n key: \"getTextPrecedingCurrentSelection\",\n value: function getTextPrecedingCurrentSelection() {\n var context = this.tribute.current,\n text = '';\n\n if (!this.isContentEditable(context.element)) {\n var textComponent = this.tribute.current.element;\n\n if (textComponent) {\n var startPos = textComponent.selectionStart;\n\n if (textComponent.value && startPos >= 0) {\n text = textComponent.value.substring(0, startPos);\n }\n }\n } else {\n var selectedElem = this.getWindowSelection().anchorNode;\n\n if (selectedElem != null) {\n var workingNodeContent = selectedElem.textContent;\n var selectStartOffset = this.getWindowSelection().getRangeAt(0).startOffset;\n\n if (workingNodeContent && selectStartOffset >= 0) {\n text = workingNodeContent.substring(0, selectStartOffset);\n }\n }\n }\n\n return text;\n }\n }, {\n key: \"getLastWordInText\",\n value: function getLastWordInText(text) {\n text = text.replace(/\\u00A0/g, ' '); // https://stackoverflow.com/questions/29850407/how-do-i-replace-unicode-character-u00a0-with-a-space-in-javascript\n\n var wordsArray = text.split(/\\s+/);\n var worldsCount = wordsArray.length - 1;\n return wordsArray[worldsCount].trim();\n }\n }, {\n key: \"getTriggerInfo\",\n value: function getTriggerInfo(menuAlreadyActive, hasTrailingSpace, requireLeadingSpace, allowSpaces, isAutocomplete) {\n var _this2 = this;\n\n var ctx = this.tribute.current;\n var selected, path, offset;\n\n if (!this.isContentEditable(ctx.element)) {\n selected = this.tribute.current.element;\n } else {\n var selectionInfo = this.getContentEditableSelectedPath(ctx);\n\n if (selectionInfo) {\n selected = selectionInfo.selected;\n path = selectionInfo.path;\n offset = selectionInfo.offset;\n }\n }\n\n var effectiveRange = this.getTextPrecedingCurrentSelection();\n var lastWordOfEffectiveRange = this.getLastWordInText(effectiveRange);\n\n if (isAutocomplete) {\n return {\n mentionPosition: effectiveRange.length - lastWordOfEffectiveRange.length,\n mentionText: lastWordOfEffectiveRange,\n mentionSelectedElement: selected,\n mentionSelectedPath: path,\n mentionSelectedOffset: offset\n };\n }\n\n if (effectiveRange !== undefined && effectiveRange !== null) {\n var mostRecentTriggerCharPos = -1;\n var triggerChar;\n this.tribute.collection.forEach(function (config) {\n var c = config.trigger;\n var idx = config.requireLeadingSpace ? _this2.lastIndexWithLeadingSpace(effectiveRange, c) : effectiveRange.lastIndexOf(c);\n\n if (idx > mostRecentTriggerCharPos) {\n mostRecentTriggerCharPos = idx;\n triggerChar = c;\n requireLeadingSpace = config.requireLeadingSpace;\n }\n });\n\n if (mostRecentTriggerCharPos >= 0 && (mostRecentTriggerCharPos === 0 || !requireLeadingSpace || /[\\xA0\\s]/g.test(effectiveRange.substring(mostRecentTriggerCharPos - 1, mostRecentTriggerCharPos)))) {\n var currentTriggerSnippet = effectiveRange.substring(mostRecentTriggerCharPos + 1, effectiveRange.length);\n triggerChar = effectiveRange.substring(mostRecentTriggerCharPos, mostRecentTriggerCharPos + 1);\n var firstSnippetChar = currentTriggerSnippet.substring(0, 1);\n var leadingSpace = currentTriggerSnippet.length > 0 && (firstSnippetChar === ' ' || firstSnippetChar === '\\xA0');\n\n if (hasTrailingSpace) {\n currentTriggerSnippet = currentTriggerSnippet.trim();\n }\n\n var regex = allowSpaces ? /[^\\S ]/g : /[\\xA0\\s]/g;\n this.tribute.hasTrailingSpace = regex.test(currentTriggerSnippet);\n\n if (!leadingSpace && (menuAlreadyActive || !regex.test(currentTriggerSnippet))) {\n return {\n mentionPosition: mostRecentTriggerCharPos,\n mentionText: currentTriggerSnippet,\n mentionSelectedElement: selected,\n mentionSelectedPath: path,\n mentionSelectedOffset: offset,\n mentionTriggerChar: triggerChar\n };\n }\n }\n }\n }\n }, {\n key: \"lastIndexWithLeadingSpace\",\n value: function lastIndexWithLeadingSpace(str, _char) {\n var reversedStr = str.split('').reverse().join('');\n var index = -1;\n\n for (var cidx = 0, len = str.length; cidx < len; cidx++) {\n var firstChar = cidx === str.length - 1;\n var leadingSpace = /\\s/.test(reversedStr[cidx + 1]);\n var match = _char === reversedStr[cidx];\n\n if (match && (firstChar || leadingSpace)) {\n index = str.length - 1 - cidx;\n break;\n }\n }\n\n return index;\n }\n }, {\n key: \"isContentEditable\",\n value: function isContentEditable(element) {\n return element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA';\n }\n }, {\n key: \"isMenuOffScreen\",\n value: function isMenuOffScreen(coordinates, menuDimensions) {\n var windowWidth = window.innerWidth;\n var windowHeight = window.innerHeight;\n var doc = document.documentElement;\n var windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n var windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n var menuTop = typeof coordinates.top === 'number' ? coordinates.top : windowTop + windowHeight - coordinates.bottom - menuDimensions.height;\n var menuRight = typeof coordinates.right === 'number' ? coordinates.right : coordinates.left + menuDimensions.width;\n var menuBottom = typeof coordinates.bottom === 'number' ? coordinates.bottom : coordinates.top + menuDimensions.height;\n var menuLeft = typeof coordinates.left === 'number' ? coordinates.left : windowLeft + windowWidth - coordinates.right - menuDimensions.width;\n return {\n top: menuTop < Math.floor(windowTop),\n right: menuRight > Math.ceil(windowLeft + windowWidth),\n bottom: menuBottom > Math.ceil(windowTop + windowHeight),\n left: menuLeft < Math.floor(windowLeft)\n };\n }\n }, {\n key: \"getMenuDimensions\",\n value: function getMenuDimensions() {\n // Width of the menu depends of its contents and position\n // We must check what its width would be without any obstruction\n // This way, we can achieve good positioning for flipping the menu\n var dimensions = {\n width: null,\n height: null\n };\n this.tribute.menu.style.cssText = \"top: 0px;\\n left: 0px;\\n position: fixed;\\n display: block;\\n visibility; hidden;\";\n dimensions.width = this.tribute.menu.offsetWidth;\n dimensions.height = this.tribute.menu.offsetHeight;\n this.tribute.menu.style.cssText = \"display: none;\";\n return dimensions;\n }\n }, {\n key: \"getTextAreaOrInputUnderlinePosition\",\n value: function getTextAreaOrInputUnderlinePosition(element, position, flipped) {\n var properties = ['direction', 'boxSizing', 'width', 'height', 'overflowX', 'overflowY', 'borderTopWidth', 'borderRightWidth', 'borderBottomWidth', 'borderLeftWidth', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'fontStyle', 'fontVariant', 'fontWeight', 'fontStretch', 'fontSize', 'fontSizeAdjust', 'lineHeight', 'fontFamily', 'textAlign', 'textTransform', 'textIndent', 'textDecoration', 'letterSpacing', 'wordSpacing'];\n var isFirefox = window.mozInnerScreenX !== null;\n var div = this.getDocument().createElement('div');\n div.id = 'input-textarea-caret-position-mirror-div';\n this.getDocument().body.appendChild(div);\n var style = div.style;\n var computed = window.getComputedStyle ? getComputedStyle(element) : element.currentStyle;\n style.whiteSpace = 'pre-wrap';\n\n if (element.nodeName !== 'INPUT') {\n style.wordWrap = 'break-word';\n } // position off-screen\n\n\n style.position = 'absolute';\n style.visibility = 'hidden'; // transfer the element's properties to the div\n\n properties.forEach(function (prop) {\n style[prop] = computed[prop];\n });\n\n if (isFirefox) {\n style.width = \"\".concat(parseInt(computed.width) - 2, \"px\");\n if (element.scrollHeight > parseInt(computed.height)) style.overflowY = 'scroll';\n } else {\n style.overflow = 'hidden';\n }\n\n div.textContent = element.value.substring(0, position);\n\n if (element.nodeName === 'INPUT') {\n div.textContent = div.textContent.replace(/\\s/g, ' ');\n }\n\n var span = this.getDocument().createElement('span');\n span.textContent = element.value.substring(position) || '.';\n div.appendChild(span);\n var rect = element.getBoundingClientRect();\n var doc = document.documentElement;\n var windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n var windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n var top = 0;\n var left = 0;\n\n if (this.menuContainerIsBody) {\n top = rect.top;\n left = rect.left;\n }\n\n var coordinates = {\n top: top + windowTop + span.offsetTop + parseInt(computed.borderTopWidth) + parseInt(computed.fontSize) - element.scrollTop,\n left: left + windowLeft + span.offsetLeft + parseInt(computed.borderLeftWidth)\n };\n var windowWidth = window.innerWidth;\n var windowHeight = window.innerHeight;\n var menuDimensions = this.getMenuDimensions();\n var menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n if (menuIsOffScreen.right) {\n coordinates.right = windowWidth - coordinates.left;\n coordinates.left = 'auto';\n }\n\n var parentHeight = this.tribute.menuContainer ? this.tribute.menuContainer.offsetHeight : this.getDocument().body.offsetHeight;\n\n if (menuIsOffScreen.bottom) {\n var parentRect = this.tribute.menuContainer ? this.tribute.menuContainer.getBoundingClientRect() : this.getDocument().body.getBoundingClientRect();\n var scrollStillAvailable = parentHeight - (windowHeight - parentRect.top);\n coordinates.bottom = scrollStillAvailable + (windowHeight - rect.top - span.offsetTop);\n coordinates.top = 'auto';\n }\n\n menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n if (menuIsOffScreen.left) {\n coordinates.left = windowWidth > menuDimensions.width ? windowLeft + windowWidth - menuDimensions.width : windowLeft;\n delete coordinates.right;\n }\n\n if (menuIsOffScreen.top) {\n coordinates.top = windowHeight > menuDimensions.height ? windowTop + windowHeight - menuDimensions.height : windowTop;\n delete coordinates.bottom;\n }\n\n this.getDocument().body.removeChild(div);\n return coordinates;\n }\n }, {\n key: \"getContentEditableCaretPosition\",\n value: function getContentEditableCaretPosition(selectedNodePosition) {\n var markerTextChar = '';\n var markerEl,\n markerId = \"sel_\".concat(new Date().getTime(), \"_\").concat(Math.random().toString().substr(2));\n var range;\n var sel = this.getWindowSelection();\n var prevRange = sel.getRangeAt(0);\n range = this.getDocument().createRange();\n range.setStart(sel.anchorNode, selectedNodePosition);\n range.setEnd(sel.anchorNode, selectedNodePosition);\n range.collapse(false); // Create the marker element containing a single invisible character using DOM methods and insert it\n\n markerEl = this.getDocument().createElement('span');\n markerEl.id = markerId;\n markerEl.appendChild(this.getDocument().createTextNode(markerTextChar));\n range.insertNode(markerEl);\n sel.removeAllRanges();\n sel.addRange(prevRange);\n var rect = markerEl.getBoundingClientRect();\n var doc = document.documentElement;\n var windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n var windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n var left = 0;\n var top = 0;\n\n if (this.menuContainerIsBody) {\n left = rect.left;\n top = rect.top;\n } else {\n left = markerEl.offsetLeft;\n top = markerEl.offsetTop;\n }\n\n var coordinates = {\n left: left + windowLeft,\n top: top + markerEl.offsetHeight + windowTop\n };\n var windowWidth = window.innerWidth;\n var windowHeight = window.innerHeight;\n var menuDimensions = this.getMenuDimensions();\n var menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n if (menuIsOffScreen.right) {\n coordinates.left = 'auto';\n coordinates.right = windowWidth - rect.left - windowLeft;\n }\n\n var parentHeight = this.tribute.menuContainer ? this.tribute.menuContainer.offsetHeight : this.getDocument().body.offsetHeight;\n\n if (menuIsOffScreen.bottom) {\n var parentRect = this.tribute.menuContainer ? this.tribute.menuContainer.getBoundingClientRect() : this.getDocument().body.getBoundingClientRect();\n var scrollStillAvailable = parentHeight - (windowHeight - parentRect.top);\n coordinates.top = 'auto';\n coordinates.bottom = scrollStillAvailable + (windowHeight - rect.top);\n }\n\n menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n if (menuIsOffScreen.left) {\n coordinates.left = windowWidth > menuDimensions.width ? windowLeft + windowWidth - menuDimensions.width : windowLeft;\n delete coordinates.right;\n }\n\n if (menuIsOffScreen.top) {\n coordinates.top = windowHeight > menuDimensions.height ? windowTop + windowHeight - menuDimensions.height : windowTop;\n delete coordinates.bottom;\n }\n\n markerEl.parentNode.removeChild(markerEl);\n return coordinates;\n }\n }, {\n key: \"scrollIntoView\",\n value: function scrollIntoView(elem) {\n var reasonableBuffer = 20,\n clientRect;\n var maxScrollDisplacement = 100;\n var e = this.menu;\n if (typeof e === 'undefined') return;\n\n while (clientRect === undefined || clientRect.height === 0) {\n clientRect = e.getBoundingClientRect();\n\n if (clientRect.height === 0) {\n e = e.childNodes[0];\n\n if (e === undefined || !e.getBoundingClientRect) {\n return;\n }\n }\n }\n\n var elemTop = clientRect.top;\n var elemBottom = elemTop + clientRect.height;\n\n if (elemTop < 0) {\n window.scrollTo(0, window.pageYOffset + clientRect.top - reasonableBuffer);\n } else if (elemBottom > window.innerHeight) {\n var maxY = window.pageYOffset + clientRect.top - reasonableBuffer;\n\n if (maxY - window.pageYOffset > maxScrollDisplacement) {\n maxY = window.pageYOffset + maxScrollDisplacement;\n }\n\n var targetY = window.pageYOffset - (window.innerHeight - elemBottom);\n\n if (targetY > maxY) {\n targetY = maxY;\n }\n\n window.scrollTo(0, targetY);\n }\n }\n }, {\n key: \"menuContainerIsBody\",\n get: function get() {\n return this.tribute.menuContainer === document.body || !this.tribute.menuContainer;\n }\n }]);\n\n return TributeRange;\n}();\n\nvar _default = TributeRange;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n\n},{}],5:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// Thanks to https://github.com/mattyork/fuzzy\nvar TributeSearch =\n/*#__PURE__*/\nfunction () {\n function TributeSearch(tribute) {\n _classCallCheck(this, TributeSearch);\n\n this.tribute = tribute;\n this.tribute.search = this;\n }\n\n _createClass(TributeSearch, [{\n key: \"simpleFilter\",\n value: function simpleFilter(pattern, array) {\n var _this = this;\n\n return array.filter(function (string) {\n return _this.test(pattern, string);\n });\n }\n }, {\n key: \"test\",\n value: function test(pattern, string) {\n return this.match(pattern, string) !== null;\n }\n }, {\n key: \"match\",\n value: function match(pattern, string, opts) {\n opts = opts || {};\n var patternIdx = 0,\n result = [],\n len = string.length,\n totalScore = 0,\n currScore = 0,\n pre = opts.pre || '',\n post = opts.post || '',\n compareString = opts.caseSensitive && string || string.toLowerCase(),\n ch,\n compareChar;\n\n if (opts.skip) {\n return {\n rendered: string,\n score: 0\n };\n }\n\n pattern = opts.caseSensitive && pattern || pattern.toLowerCase();\n var patternCache = this.traverse(compareString, pattern, 0, 0, []);\n\n if (!patternCache) {\n return null;\n }\n\n return {\n rendered: this.render(string, patternCache.cache, pre, post),\n score: patternCache.score\n };\n }\n }, {\n key: \"traverse\",\n value: function traverse(string, pattern, stringIndex, patternIndex, patternCache) {\n // if the pattern search at end\n if (pattern.length === patternIndex) {\n // calculate score and copy the cache containing the indices where it's found\n return {\n score: this.calculateScore(patternCache),\n cache: patternCache.slice()\n };\n } // if string at end or remaining pattern > remaining string\n\n\n if (string.length === stringIndex || pattern.length - patternIndex > string.length - stringIndex) {\n return undefined;\n }\n\n var c = pattern[patternIndex];\n var index = string.indexOf(c, stringIndex);\n var best, temp;\n\n while (index > -1) {\n patternCache.push(index);\n temp = this.traverse(string, pattern, index + 1, patternIndex + 1, patternCache);\n patternCache.pop(); // if downstream traversal failed, return best answer so far\n\n if (!temp) {\n return best;\n }\n\n if (!best || best.score < temp.score) {\n best = temp;\n }\n\n index = string.indexOf(c, index + 1);\n }\n\n return best;\n }\n }, {\n key: \"calculateScore\",\n value: function calculateScore(patternCache) {\n var score = 0;\n var temp = 1;\n patternCache.forEach(function (index, i) {\n if (i > 0) {\n if (patternCache[i - 1] + 1 === index) {\n temp += temp + 1;\n } else {\n temp = 1;\n }\n }\n\n score += temp;\n });\n return score;\n }\n }, {\n key: \"render\",\n value: function render(string, indices, pre, post) {\n var rendered = string.substring(0, indices[0]);\n indices.forEach(function (index, i) {\n rendered += pre + string[index] + post + string.substring(index + 1, indices[i + 1] ? indices[i + 1] : string.length);\n });\n return rendered;\n }\n }, {\n key: \"filter\",\n value: function filter(pattern, arr, opts) {\n var _this2 = this;\n\n opts = opts || {};\n return arr.reduce(function (prev, element, idx, arr) {\n var str = element;\n\n if (opts.extract) {\n str = opts.extract(element);\n\n if (!str) {\n // take care of undefineds / nulls / etc.\n str = '';\n }\n }\n\n var rendered = _this2.match(pattern, str, opts);\n\n if (rendered != null) {\n prev[prev.length] = {\n string: rendered.rendered,\n score: rendered.score,\n index: idx,\n original: element\n };\n }\n\n return prev;\n }, []).sort(function (a, b) {\n var compare = b.score - a.score;\n if (compare) return compare;\n return a.index - b.index;\n });\n }\n }]);\n\n return TributeSearch;\n}();\n\nvar _default = TributeSearch;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n\n},{}],6:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _Tribute = _interopRequireDefault(require(\"./Tribute\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/**\n* Tribute.js\n* Native ES6 JavaScript @mention Plugin\n**/\nvar _default = _Tribute[\"default\"];\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n\n},{\"./Tribute\":1}],7:[function(require,module,exports){\n\"use strict\";\n\nif (!Array.prototype.find) {\n Array.prototype.find = function (predicate) {\n if (this === null) {\n throw new TypeError('Array.prototype.find called on null or undefined');\n }\n\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\n }\n\n var list = Object(this);\n var length = list.length >>> 0;\n var thisArg = arguments[1];\n var value;\n\n for (var i = 0; i < length; i++) {\n value = list[i];\n\n if (predicate.call(thisArg, value, i, list)) {\n return value;\n }\n }\n\n return undefined;\n };\n}\n\nif (window && typeof window.CustomEvent !== \"function\") {\n var CustomEvent = function CustomEvent(event, params) {\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n\n if (typeof window.Event !== 'undefined') {\n CustomEvent.prototype = window.Event.prototype;\n }\n\n window.CustomEvent = CustomEvent;\n}\n\n},{}]},{},[6])(6)\n});\n","/* eslint-disable require-jsdoc, no-console */\n\nimport areachart from \"src/decidim/vizzs/areachart\"\n\n$(() => {\n\n const metricsData = {};\n const metricsContainer = {};\n const metricsParams = {};\n\n const query = () => {\n let metricsQuery = `metrics(names: ${metricsParams.names}, space_type: \"${metricsParams.spaceType}\", space_id: ${metricsParams.spaceId}) { name history { key value } }`;\n return {query: `{ ${metricsQuery} }`};\n }\n\n const parameterize = (metrics) => {\n metricsParams.names = JSON.stringify(metrics || []);\n metricsParams.spaceType = $(\"#metrics #metrics-space_type\").val() || null;\n metricsParams.spaceId = $(\"#metrics #metrics-space_id\").val() || null;\n }\n\n const fetch = (metrics) => $.post(window.Decidim.config.get(\"api_path\"), query(metrics));\n\n const downloadMetricData = (event) => {\n event.preventDefault();\n let metricName = $(event.target).parents(\".metric-downloader\").data(\"metric\");\n let csvContent = \"data:text/csv;charset=utf-8,\";\n\n csvContent += \"key,value\\r\\n\";\n metricsData[metricName].forEach((metricData) => {\n csvContent += `${metricData.key},${metricData.value}\\r\\n`;\n });\n\n // Required for FF\n let link = document.createElement(\"a\");\n link.setAttribute(\"href\", encodeURI(csvContent));\n link.setAttribute(\"download\", `${metricName}_metric_data.csv`);\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n\n $(\".metric-chart:visible\").each((_index, container) => {\n metricsContainer[$(container).data(\"metric\")] = container;\n });\n $(\".metric-downloader\").each((_index, container) => {\n container.onclick = downloadMetricData;\n });\n\n if (!$.isEmptyObject(metricsContainer)) {\n parameterize(Object.keys(metricsContainer))\n fetch().then((response) => {\n if (response.data) {\n $.each(response.data.metrics, (_index, metricData) => {\n let container = metricsContainer[metricData.name];\n if (metricData.history.length === 0) {\n $(container).remove();\n return;\n }\n let info = $(container).data(\"info\");\n metricsData[metricData.name] = $.extend(true, [], metricData.history);\n areachart({\n container: `#${container.id}`,\n data: metricData.history,\n title: info.title,\n objectName: info.object,\n ...$(container).data()\n });\n });\n } else if (response.errors) {\n console.log(\"Something wrong happened when fetching metrics:\");\n $.each(response.errors, (_index, error) => {\n console.log(error.message);\n });\n $(\"#metrics\").remove();\n }\n }).fail((err) => {\n console.log(`Something wrong happened when fetching metrics: ${err.statusText}`);\n $(\"#metrics\").remove();\n });\n }\n});\n","/* eslint-disable require-jsdoc, id-length, no-undefined, no-unused-vars, multiline-ternary, no-ternary, no-nested-ternary, no-invalid-this */\n/* eslint prefer-reflect: [\"error\", { \"exceptions\": [\"call\"] }] */\n/* eslint dot-location: [\"error\", \"property\"] */\n/* eslint no-unused-vars: 0 */\n\nimport { select, mouse } from \"d3-selection\";\nimport { min, max, extent, ascending, bisector } from \"d3-array\";\nimport { scaleTime, scaleLinear } from \"d3-scale\";\nimport { axisLeft, axisBottom } from \"d3-axis\";\nimport { timeMonth } from \"d3-time\";\nimport { timeFormat, isoParse } from \"d3-time-format\";\nimport { area, line } from \"d3-shape\";\n\n// lib\nexport default function areachart(opts = {}) {\n\n const parseData = (data) => {\n // format the data\n data.forEach((d) => {\n d.key = isoParse(d.key)\n d.value = Number(d.value)\n });\n\n // order by date\n return data.sort((x, y) => ascending(x.key, y.key))\n }\n\n // OPTIONAL: Helper function to accumulates all data values\n const aggregate = (agg) => agg.map((item, index, array) => {\n if (index > 0) {\n item.value += array[index - 1].value\n }\n return item\n })\n\n // parse opts\n let data = parseData(opts.data)\n let title = opts.title\n let objectName = opts.objectName || \"\"\n let container = select(opts.container)\n let showAxis = opts.axis || false\n let ratio = (opts.ratio || \"\").split(\":\").reduce((a, b) => a / b) || (4 / 3)\n let showTooltip = Object.is(opts.tip, undefined) ? true : opts.tip\n let cumulative = opts.agg || false\n\n if (cumulative) {\n data = aggregate(data)\n }\n\n // set the dimensions and margins of the graph\n let margin = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n\n let width = Number(container.node().getBoundingClientRect().width) - margin.left - margin.right\n let height = (width / ratio) - margin.top - margin.bottom\n let titlePadding = min([width / 10, 32])\n\n // set the ranges\n let x = scaleTime().range([0, width]);\n let y = scaleLinear().range([height, 0]);\n\n // define the area\n let _area = area()\n .x((d) => x(d.key))\n .y0(height)\n .y1((d) => y(d.value));\n\n // define the line\n let valueline = line()\n .x((d) => x(d.key))\n .y((d) => y(d.value));\n\n let svg = container.append(\"svg\")\n .attr(\"width\", width + margin.left + margin.right)\n .attr(\"height\", height + margin.top + margin.bottom)\n .append(\"g\")\n .attr(\"transform\", `translate(${margin.left},${margin.top})`);\n\n // scale the range of the data\n x.domain(extent(data, (d) => d.key));\n y.domain([0, max(data, (d) => d.value)]).nice();\n\n // add the valueline path.\n let topLine = svg.append(\"path\")\n .data([data])\n .attr(\"class\", \"line\")\n .attr(\"d\", valueline)\n\n // add the area\n svg.append(\"path\")\n .data([data])\n .attr(\"class\", \"area\")\n .attr(\"d\", _area)\n\n if (showTooltip) {\n // tooltip\n let circle = svg.append(\"circle\")\n .attr(\"class\", \"circle\")\n .attr(\"r\", 6)\n .style(\"display\", \"none\")\n\n let tooltip = select(\"body\").append(\"div\")\n .attr(\"id\", `${container.node().id}-tooltip`)\n .attr(\"class\", \"chart-tooltip\")\n .style(\"opacity\", 0)\n\n svg\n .on(\"mouseover\", () => {\n circle.style(\"display\", null)\n tooltip.style(\"opacity\", 1)\n })\n .on(\"mouseout\", () => {\n circle.style(\"display\", \"none\")\n tooltip.style(\"opacity\", 0)\n })\n .on(\"mousemove\", function() {\n let x0 = x.invert(mouse(this)[0])\n let i = bisector((d) => d.key).left(data, x0, 1)\n let d0 = data[i - 1]\n let d1 = data[i]\n let d = (x0 - d0.key > d1.key - x0) ? d1 : d0\n\n // svg position relative to document\n let coords = {\n x: window.pageXOffset + container.node().getBoundingClientRect().left,\n y: window.pageYOffset + container.node().getBoundingClientRect().top\n }\n\n let tooltipContent = `\n
    \n ${timeFormat(\"%e %B %Y\")(d.key)}
    \n ${d.value.toLocaleString()} ${objectName}\n
    `\n\n circle.attr(\"transform\", `translate(${x(d.key)},${y(d.value)})`)\n tooltip.html(tooltipContent)\n .style(\"left\", `${coords.x + x(d.key)}px`)\n .style(\"top\", `${coords.y + y(d.value)}px`)\n })\n }\n\n if (showAxis) {\n let xAxis = axisBottom(x)\n .ticks(timeMonth)\n .tickFormat(timeFormat(\"%b %y\"))\n .tickSize(-height)\n let yAxis = axisLeft(y)\n .ticks(5)\n .tickSize(8)\n\n let _xAxis = (g) => {\n g.call(xAxis)\n g.select(\".domain\").remove()\n g.selectAll(\".tick line\").attr(\"class\", \"dashed\")\n g.selectAll(\".tick text\").attr(\"y\", 6)\n }\n let _yAxis = (g) => {\n g.call(yAxis)\n g.select(\".domain\").remove()\n g.select(\".tick:first-of-type\").remove()\n g.selectAll(\".tick text\").attr(\"text-anchor\", \"start\").attr(\"x\", 6)\n }\n\n // custom X-Axis\n svg.append(\"g\")\n .attr(\"transform\", `translate(0,${height})`)\n .call(_xAxis);\n\n // custom Y-Axis\n svg.append(\"g\")\n .call(_yAxis)\n\n // last circle (current value)\n let g = svg.append(\"g\")\n .data([data])\n .attr(\"transform\", (d) => `translate(${x(d[d.length - 1].key)},${y(d[d.length - 1].value)})`)\n\n g.append(\"circle\")\n .attr(\"class\", \"circle\")\n .attr(\"r\", 8)\n\n g.append(\"text\")\n .attr(\"class\", \"sum\")\n .attr(\"text-anchor\", \"end\")\n .attr(\"dx\", -8 * 2)\n .text((d) => d[d.length - 1].value.toLocaleString())\n\n } else {\n // add the title group\n let g = svg.append(\"g\")\n .attr(\"text-anchor\", \"start\")\n .attr(\"transform\", `translate(${titlePadding},${titlePadding})`)\n\n let titleLines = 0\n\n if (title.length) {\n g.append(\"text\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"class\", \"title\")\n .text(title)\n .call(function(fulltext, wrapwidth, start = 0) {\n fulltext.each(function() {\n let text = select(this)\n let word = \"\"\n let words = text.text().split(/\\s+/).reverse()\n let _line = []\n let lineNumber = 0\n let lineHeight = 1.1\n let _x = text.attr(\"x\")\n let _y = text.attr(\"y\")\n let dy = 0\n let tspan = text.text(null)\n .append(\"tspan\")\n .attr(\"x\", _x)\n .attr(\"y\", _y)\n .attr(\"dy\", `${dy}em`)\n\n /* eslint-disable no-cond-assign, no-plusplus */\n while (word = words.pop()) {\n _line.push(word);\n tspan.text(_line.join(\" \"));\n if (tspan.node().getComputedTextLength() > wrapwidth) {\n _line.pop()\n tspan.text(_line.join(\" \"))\n _line = [word]\n tspan = text.append(\"tspan\")\n .attr(\"x\", _x)\n .attr(\"y\", _y)\n .attr(\"dy\", `${(++lineNumber * lineHeight) + dy}em`)\n .text(word);\n }\n }\n\n titleLines = lineNumber * lineHeight\n });\n }, width - (titlePadding * 2))\n }\n\n let fontSize = parseFloat(getComputedStyle(g.node()).fontSize);\n\n g.append(\"text\")\n .attr(\"x\", 0)\n .attr(\"dy\", title.length ? (titlePadding * 2) + (titleLines * fontSize) : (titlePadding * 1.25))\n .attr(\"class\", \"sum\")\n .text(data[data.length - 1].value.toLocaleString())\n }\n}\n"],"names":["$","document","on","event","preventDefault","link","currentTarget","$modal","concat","dataset","open","html","ajax","type","url","openUrl","success","$html","foundation","error","request","status","_error","_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","_defineProperties","target","props","descriptor","input","hint","prim","toPrimitive","undefined","res","String","Number","_toPrimitive","AutoComplete","Constructor","el","_this","options","arguments","instance","_classCallCheck","this","element","stickySelectedSpan","clearStickySelectionSpan","stickyHiddenInput","promptDiv","fn","_src","thresholdTemp","threshold","assign","placeholder","mode","searchPrompt","searchPromptText","selected","maxResults","dataMatchKeys","dataSource","dataFilter","delay","modifyResult","autocomplete","AutoCompleteJS","selector","diacritics","placeHolder","debounce","data","src","_callee","query","fetchResults","_context","t0","self","args","apply","err","_x","filter","list","results","item","idx","arr","findIndex","val","resultsList","resultItem","events","blur","style","display","acWrapper","closest","ac","stopPropagation","addEventListener","createPromptDiv","createStickySelect","createMultiSelect","protoProps","setInput","detail","selection","handleStickyEvents","handleMultiEvents","addMultiSelectItem","addStickySelectItem","removeStickySelection","includes","test","hiddenInput","createElement","prepend","innerHTML","_this2","chosen","classList","add","clearSelection","setAttribute","evt","querySelector","remove","parentElement","appendChild","multiSelectWrapper","inputContainer","insertBefore","createHiddenInput","_this3","focus","className","_this4","staticProps","updateLabel","$el","$input","label","to","clearTimeout","setTimeout","removeData","ev","selectedText","is","select","text","getSelectedText","copySuccess","$temp","css","width","height","after","copyDone","execCommand","performCopy","message","announcementMessage","$msg","announceToScreenReader","DataPicker","pickers","modal","_createModalContainer","appendTo","current","each","_index","picker","activate","$picker","_setCurrentPicker","multiple","_index2","div","hasClass","isMultiPicker","_targetFromEvent","_openPicker","tagName","_removeValue","parentNode","autosort","_sort","toggleClass","attr","map","$link","get","savedData","_choose","interactive","modify","_load","$target","find","resp","modalContent","_handleLinks","_handleCheckboxes","content","_this5","click","chooseUrl","_this6","checkbox","$checkbox","checked","_targetFromValue","change","close","opts","dataText","_escape","choosenOption","trigger","_removeErrors","_close","children","sort","item1","item2","detach","_this7","fadeoutTime","navigator","webdriver","fadeOut","_this7$current$target","parent","removeClass","str","replace","_char","charCodeAt","formDatePicker","node","language","initialDate","pickTime","languageProps","fdatepicker","dates","format","disableDblClickSelection","leftArrow","rightArrow","delayed","context","func","wait","timeout","_len","Array","_key","Reflect","CheckBoxesTree","checkboxesTree","querySelectorAll","globalChecks","global","checkGlobalCheck","checkTheCheckBoxes","checkTheCheckParent","checkboxes","index","theForm","elem","disabled","targetChecks","checkStatus","indeterminate","checksContext","totalInputs","checkedInputs","indeterminateInputs","from","subfilters","nextElementSibling","contains","checkBoxContext","parents","parentCheck","totalCheckSiblings","checkedSiblings","indeterminateSiblings","sibling","FormFilterComponent","$form","id","_getUID","mounted","changeEvents","theCheckBoxesTree","theDataPicker","window","_updateInitialState","_onFormChange","bind","_onFormSubmit","_onPopState","Decidim","PopStateHandler","popStateSubmiter","off","unregisterCallback","queue","contentContainer","currentFormRequest","abort","originalEvent","addClass","setContainerForm","registerCallback","currentState","_this$_currentStateAn2","_slicedToArray","_currentStateAndPath","initialPath","initialState","_path","replaceState","withHost","state","path","location","pathname","search","hash","origin","regexpResult","decodeURIComponent","_getLocation","match","reduce","acc","result","_result$match2","array","order","clear","_clearForm","filterParams","_parseLocationFilterValues","currentOrder","_parseLocationOrderValue","fieldName","isArray","updateChecked","pickerState","load","Rails","fire","eventDetail","_this$_currentStateAn6","newPath","newState","pushState","_saveFilters","formAction","params","serialize","indexOf","save","Date","getUTCMilliseconds","Math","floor","random","pathWithQueryStrings","sessionStorage","pathName","setItem","JSON","stringify","jQuery","lb","days","daysShort","daysMin","months","monthsShort","today","$hashtagContainer","nodatafound","noMatchTemplate","cursor","__quill","getText","tribute","Tribute","cb","post","config","response","hashtags","fail","always","$parent","removeAttr","remoteSearch","positionMenu","menuContainer","fillAttr","lookup","selectTemplate","range","isContentEditable","quill","insertText","original","Quill","sources","API","position","getLength","setSelection","menuItemTemplate","$qlEditor","attach","isActive","$mentionContainer","callback","users","allowSpaces","menuItemLimit","selectClass","nickname","svg","__typename","iconsPath","membersCount","avatarUrl","setupEvents","$element","menu","body","getDocument","sessionTimeOutEnabled","$timeoutModal","timeoutInSeconds","parseInt","secondsUntilTimeoutPath","heartbeatPath","interval","preventTimeOutSeconds","endsAt","dayjs","lastAction","$continueSessionButton","lastActivityCheck","preventTimeOutUntil","setTimer","secondsUntilExpiration","heartbeat","contentType","exitInterval","setInterval","seconds","timeSinceLastActivityCheckInSeconds","round","headers","secondsUntilSessionExpires","seconds_remaining","mousemove","scroll","keypress","ajaxComplete","_event","_xhr","settings","clearInterval","enableSessionTimeout","disableSessionTimeout","UTCDate","UTC","Datepicker","that","autoShow","closeButton","split","isRTL","rtl","DPGlobal","parseFormat","formatText","isInline","isInput","component","hasInput","onRender","linkField","linkFormat","minuteStep","pickerPosition","faCSSprefix","closeIcon","minView","convertViewMode","maxView","modes","startViewMode","startView","viewMode","forceParse","template","proxy","mousedown","show","hide","siblings","append","autoclose","keyboardNavigation","todayBtn","todayHighlight","calendarWeeks","weekStart","weekEnd","startDate","Infinity","endDate","daysOfWeekDisabled","datesDisabled","setStartDate","setEndDate","setDaysOfWeekDisabled","setDatesDisabled","date","viewDate","parseDate","setValue","fillDow","fillMonths","update","showMode","_attachEvents","_events","_detachEvents","keyup","keydown","dblclick","outerHeight","place","datepicker","getDate","getUTCDate","getTime","getTimezoneOffset","setDate","setUTCDate","formatted","getFormattedDate","formatDate","updateNavArrows","valueOf","zIndexes","zIndex","b","textbox","offset","outerWidth","fullOffsetTop","top","offsetLeft","left","canShowTop","scrollTop","canShowBottom","fromArgs","currentVal","fill","dowCnt","cell","year","getUTCFullYear","month","getUTCMonth","dayMonth","hours","getUTCHours","minutes","getUTCMinutes","startYear","startMonth","endYear","endMonth","currentDate","titleFormat","en","toggle","prevMonth","day","getDaysInMonth","getUTCDay","nextMonth","clsName","getDay","getFullYear","calWeek","getMonth","inArray","empty","join","actual","currentYear","end","eq","yearCont","hour","visibility","nodeName","toLowerCase","dir","navStep","moveHour","moveDate","moveMonth","moveYear","getHours","getMinutes","getSeconds","_setDate","getUTCSeconds","setUTCMonth","setUTCFullYear","substr","oldViewMode","which","new_date","setUTCHours","new_month","mag","abs","dateWithinRange","keyCode","newDate","newViewDate","dateChanged","ctrlKey","shiftKey","newViewMode","max","min","changeViewDate","option","shift","_data","$this","extend","defaults","_toConsumableArray","navFnc","isLeapYear","validParts","nonpunctuation","separators","parts","part_re","part","exec","Datetimepicker","filtered","parsed","setters_order","setters_map","hh","ii","setUTCMinutes","ss","setUTCSeconds","yyyy","yy","m","_d","M","MM","mm","dd","cnt","toString","substring","seps","headTemplate","contTemplate","footTemplate","code","exports","require","module","_TributeEvents","_interopRequireDefault","_TributeMenuEvents","_TributeRange","_TributeSearch","obj","__esModule","_arrayWithHoles","_arr","_n","_e","_s","_i","_iterableToArrayLimit","_nonIterableRest","_default","_ref","_ref$values","_ref$iframe","iframe","_ref$selectClass","_ref$trigger","_ref$autocompleteMode","autocompleteMode","_ref$selectTemplate","_ref$menuItemTemplate","_ref$lookup","_ref$fillAttr","_ref$collection","collection","_ref$menuContainer","_ref$noMatchTemplate","_ref$requireLeadingSp","requireLeadingSpace","_ref$allowSpaces","_ref$replaceTextSuffi","replaceTextSuffix","_ref$positionMenu","_ref$spaceSelectsMatc","spaceSelectsMatch","_ref$searchOpts","searchOpts","_ref$menuItemLimit","menuSelected","inputEvent","hasTrailingSpace","defaultSelectTemplate","defaultMenuItemTemplate","console","warn","matchItem","string","NodeList","HTMLCollection","_attach","hasAttribute","ensureEditable","inputTypes","contentEditable","wrapper","ul","scrollTo","mentionText","currentMentionTextSnapshot","createMenu","tributeMenu","menuEvents","processValues","items","pre","skip","extract","filteredItems","positionMenuAtCaret","noMatchEvent","CustomEvent","dispatchEvent","hideMenu","fragment","createDocumentFragment","li","_this2$_findLiTarget2","_findLiTarget","movementY","setActiveLi","getAttribute","collectionIndex","activeElement","placeCaretAtEnd","externalTrigger","insertTextAtCursor","insertAtCaret","showMenuFor","getSelection","createRange","selectNodeContents","collapse","sel","removeAllRanges","addRange","createTextRange","textRange","moveToElementText","getRangeAt","deleteContents","textNode","createTextNode","insertNode","textarea","scrollPos","caretPos","selectionStart","front","back","selectionEnd","cssText","replaceText","replaceTriggerText","newValues","_append","_detach","unbind","removeAttribute","TributeEvents","boundKeydown","boundKeyup","boundInput","removeEventListener","shouldDeactivate","commandEvent","callbacks","getElementsByClassName","selectItemAtIndex","updateSelection","triggerChar","getKeyCode","triggers","eventKeyPressed","getTriggerInfo","mentionTriggerChar","selectedPath","mentionSelectedPath","selectedOffset","mentionSelectedOffset","collectionItem","enter","escape","tab","space","up","count","scrollHeight","down","lis","liClientRect","getBoundingClientRect","menuClientRect","bottom","scrollDistance","_scrollDistance","includeMargin","currentStyle","getComputedStyle","parseFloat","marginTop","marginBottom","TributeMenuEvents","menuClickEvent","menuContainerScrollEvent","windowResizeEvent","immediate","_arguments","callNow","TributeRange","contentWindow","coordinates","getContentEditableCaretPosition","mentionPosition","getTextAreaOrInputUnderlinePosition","right","scrollIntoView","menuDimensions","offsetWidth","offsetHeight","menuIsOffScreen","isMenuOffScreen","menuIsOffScreenHorizontally","innerWidth","menuIsOffScreenVertically","innerHeight","targetElement","childNodes","nextSibling","previousSibling","getWindowSelection","setStart","setEnd","replaceEvent","pasteHtml","myField","textSuffix","startPos","endPos","anchorNode","lastNode","frag","firstChild","cloneRange","setStartAfter","ctx","ce","getNodePositionInParent","startOffset","selectedElem","workingNodeContent","textContent","selectStartOffset","textComponent","wordsArray","trim","menuAlreadyActive","isAutocomplete","selectionInfo","getContentEditableSelectedPath","effectiveRange","getTextPrecedingCurrentSelection","lastWordOfEffectiveRange","getLastWordInText","mentionSelectedElement","mostRecentTriggerCharPos","lastIndexWithLeadingSpace","lastIndexOf","currentTriggerSnippet","firstSnippetChar","leadingSpace","regex","reversedStr","cidx","len","firstChar","windowWidth","windowHeight","doc","documentElement","windowLeft","pageXOffset","scrollLeft","clientLeft","windowTop","pageYOffset","clientTop","menuTop","menuRight","menuBottom","menuLeft","ceil","dimensions","flipped","isFirefox","mozInnerScreenX","computed","whiteSpace","wordWrap","prop","overflowY","overflow","span","rect","menuContainerIsBody","offsetTop","borderTopWidth","fontSize","borderLeftWidth","getMenuDimensions","parentHeight","scrollStillAvailable","removeChild","selectedNodePosition","markerEl","markerId","prevRange","clientRect","elemTop","elemBottom","maxY","targetY","TributeSearch","pattern","compareString","caseSensitive","rendered","score","patternCache","traverse","render","cache","stringIndex","patternIndex","calculateScore","best","temp","indices","compare","predicate","thisArg","bubbles","cancelable","createEvent","initCustomEvent","Event","metricsQuery","metrics","metricsData","metricsContainer","metricsParams","downloadMetricData","metricName","csvContent","metricData","encodeURI","container","onclick","isEmptyObject","names","spaceType","spaceId","history","isoParse","x","ascending","parseData","title","objectName","showAxis","axis","ratio","showTooltip","tip","agg","margin","titlePadding","scaleTime","scaleLinear","_area","area","y0","y1","valueline","line","domain","extent","nice","circle","tooltip","x0","invert","mouse","bisector","d0","d1","coords","tooltipContent","timeFormat","toLocaleString","xAxis","axisBottom","ticks","timeMonth","tickFormat","tickSize","yAxis","axisLeft","selectAll","_g","titleLines","fulltext","wrapwidth","word","words","_line","lineNumber","_y","tspan","getComputedTextLength","areachart","_objectSpread","object","errors","log","statusText"],"sourceRoot":""}