{"version":3,"file":"js/1279-7a532f191fb56d0113a7.js","mappings":"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","sources":["webpack://decidim-application/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/ajax_modals.js","webpack://decidim-application/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/data_picker.js","webpack://decidim-application/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/form_datepicker.js","webpack://decidim-application/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/delayed.js","webpack://decidim-application/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/check_boxes_tree.js","webpack://decidim-application/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/form_filter.js","webpack://decidim-application/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/foundation-datepicker/js/locales/foundation-datepicker.lb.js","webpack://decidim-application/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/gallery.js","webpack://decidim-application/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/input_hashtags.js","webpack://decidim-application/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/input_mentions.js","webpack://decidim-application/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/session_timeouter.js","webpack://decidim-application/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/vendor/foundation-datepicker.js","webpack://decidim-application/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/vendor/tribute.js","webpack://decidim-application/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/vizzs/index.js","webpack://decidim-application/../usr/local/bundle/gems/decidim-core-0.27.5/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","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(\"/api\", {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(\"/api\", {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(\"/api\", 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","DataPicker","pickers","_this","_classCallCheck","this","modal","_createModalContainer","appendTo","current","each","_index","picker","activate","key","value","_this2","$picker","_setCurrentPicker","name","values","multiple","_index2","div","data","prepend","hasClass","isMultiPicker","_targetFromEvent","_openPicker","tagName","_removeValue","parentNode","autosort","_sort","toggleClass","attr","map","$link","val","text","get","savedData","_this3","_choose","interactive","modify","target","_load","$target","find","_this4","done","resp","modalContent","_handleLinks","_handleCheckboxes","content","_this5","click","chooseUrl","_this6","checkbox","$checkbox","checked","_targetFromValue","change","close","opts","arguments","length","undefined","options","Object","assign","dataText","_escape","choosenOption","input","$input","trigger","_removeErrors","_close","children","sort","item1","item2","detach","_this7","fadeoutTime","navigator","webdriver","fadeOut","_this7$current$target","remove","parent","removeClass","str","replace","_char","charCodeAt","formDatePicker","node","language","initialDate","pickTime","languageProps","fdatepicker","dates","format","disableDblClickSelection","leftArrow","rightArrow","delayed","context","func","wait","timeout","_len","args","Array","_key","clearTimeout","setTimeout","Reflect","apply","CheckBoxesTree","checkboxesTree","querySelectorAll","globalChecks","forEach","global","classList","add","checkGlobalCheck","addEventListener","checkTheCheckBoxes","checkTheCheckParent","checkboxes","index","includes","theForm","idx","elem","disabled","targetChecks","checkStatus","indeterminate","checksContext","totalInputs","checkedInputs","indeterminateInputs","from","filter","subfilters","nextElementSibling","contains","checkBoxContext","parents","parentCheck","querySelector","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","closest","currentFormRequest","e","abort","originalEvent","detail","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","push","order","element","clear","_clearForm","filterParams","_parseLocationFilterValues","currentOrder","_parseLocationOrderValue","keys","fieldName","isArray","updateChecked","pickerState","load","Rails","fire","ev","eventDetail","_this$_currentStateAn6","newPath","newState","pushState","_saveFilters","formAction","params","serialize","indexOf","save","Date","getUTCMilliseconds","Math","floor","random","pathWithQueryStrings","sessionStorage","pathName","setItem","JSON","stringify","jQuery","fn","lb","days","daysShort","daysMin","months","monthsShort","today","$hashtagContainer","nodatafound","noMatchTemplate","cursor","__quill","getText","tribute","Tribute","cb","post","query","then","response","hashtags","fail","always","$parent","removeAttr","remoteSearch","positionMenu","menuContainer","fillAttr","lookup","item","selectTemplate","range","isContentEditable","quill","insertText","original","Quill","sources","API","position","next","getLength","setSelection","menuItemTemplate","$qlEditor","attach","isActive","$mentionContainer","callback","debounce","users","allowSpaces","menuItemLimit","selectClass","nickname","svg","__typename","iconsPath","config","membersCount","avatarUrl","setupEvents","$element","menu","body","getDocument","appendChild","sessionTimeOutEnabled","$timeoutModal","timeoutInSeconds","parseInt","secondsUntilTimeoutPath","heartbeatPath","interval","preventTimeOutSeconds","endsAt","dayjs","lastAction","$continueSessionButton","lastActivityCheck","preventTimeOutUntil","css","isNaN","setTimer","secondsUntilExpiration","heartbeat","method","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","is","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","i","weekStart","weekEnd","startDate","Infinity","endDate","daysOfWeekDisabled","datesDisabled","setStartDate","setEndDate","setDaysOfWeekDisabled","setDatesDisabled","date","viewDate","parseDate","setValue","fillDow","fillMonths","update","showMode","_attachEvents","prototype","constructor","_events","_detachEvents","focus","keyup","keydown","dblclick","stopPropagation","blur","el","height","outerHeight","place","datepicker","getDate","d","getUTCDate","getTime","getTimezoneOffset","setDate","setUTCDate","formatted","getFormattedDate","formatDate","updateNavArrows","valueOf","zIndexes","zIndex","a","b","pop","textbox","offset","width","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","slice","yearCont","hour","visibility","nodeName","toLowerCase","className","dir","navStep","moveHour","moveDate","moveMonth","moveYear","getHours","getMinutes","getSeconds","_setDate","getUTCSeconds","setUTCMonth","setUTCFullYear","substr","oldViewMode","which","new_date","setUTCHours","new_month","test","mag","abs","dateWithinRange","keyCode","newDate","newViewDate","dateChanged","ctrlKey","shiftKey","newViewMode","max","min","changeViewDate","reset","option","shift","_data","$this","_typeof","extend","defaults","_toConsumableArray","Constructor","navFnc","isLeapYear","validParts","nonpunctuation","separators","parts","Error","part_re","part","exec","Datetimepicker","call","filtered","parsed","setters_order","setters_map","hh","v","h","ii","setUTCMinutes","ss","setUTCSeconds","s","yyyy","yy","m","_d","M","MM","mm","dd","cnt","toString","substring","seps","headTemplate","contTemplate","footTemplate","f","r","n","t","o","u","code","p","exports","require","module","defineProperty","_TributeEvents","_interopRequireDefault","_TributeMenuEvents","_TributeRange","_TributeSearch","obj","__esModule","arr","_arrayWithHoles","_arr","_n","_e","_s","_i","Symbol","iterator","err","_iterableToArrayLimit","TypeError","_nonIterableRest","_defineProperties","props","descriptor","enumerable","configurable","writable","_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","instance","menuSelected","inputEvent","hasTrailingSpace","defaultSelectTemplate","defaultMenuItemTemplate","console","warn","protoProps","staticProps","matchItem","string","NodeList","HTMLCollection","_attach","hasAttribute","ensureEditable","events","setAttribute","inputTypes","contentEditable","wrapper","createElement","ul","scrollTo","mentionText","currentMentionTextSnapshot","createMenu","tributeMenu","menuEvents","processValues","items","pre","skip","extract","filteredItems","positionMenuAtCaret","noMatchEvent","CustomEvent","dispatchEvent","hideMenu","innerHTML","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","select","getRangeAt","deleteContents","textNode","createTextNode","insertNode","textarea","scrollPos","caretPos","selectionStart","front","back","selectionEnd","style","cssText","replaceText","replaceTriggerText","newValues","_append","_detach","unbind","removeAttribute","TributeEvents","boundKeydown","boundKeyup","boundInput","removeEventListener","shouldDeactivate","commandEvent","callbacks","getElementsByClassName","selectItemAtIndex","updateSelection","triggerChar","getKeyCode","triggers","eventKeyPressed","info","getTriggerInfo","mentionTriggerChar","selectedPath","mentionSelectedPath","selectedOffset","mentionSelectedOffset","collectionItem","enter","escape","tab","space","up","count","selected","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","reverse","startOffset","selectedElem","workingNodeContent","textContent","selectStartOffset","textComponent","wordsArray","trim","menuAlreadyActive","isAutocomplete","selectionInfo","getContentEditableSelectedPath","effectiveRange","getTextPrecedingCurrentSelection","lastWordOfEffectiveRange","getLastWordInText","mentionSelectedElement","mostRecentTriggerCharPos","c","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","prev","compare","predicate","list","thisArg","bubbles","cancelable","evt","createEvent","initCustomEvent","Event","define","metricsQuery","metrics","metricsData","metricsContainer","metricsParams","downloadMetricData","metricName","csvContent","metricData","encodeURI","container","onclick","isEmptyObject","names","spaceType","spaceId","history","isoParse","Number","x","y","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","g","selectAll","_g","titleLines","fulltext","wrapwidth","word","words","_line","lineNumber","_x","_y","tspan","getComputedTextLength","areachart","_objectSpread","object","errors","log","message","statusText"],"sourceRoot":""}