{"version":3,"file":"js/1090-246addcff190c7b95bf0.js","mappings":"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","sources":["webpack://app/../usr/local/bundle/bundler/gems/decidim-f145b474185c/decidim-core/app/packs/src/decidim/ajax_modals.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-f145b474185c/decidim-core/app/packs/src/decidim/autocomplete.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-f145b474185c/decidim-core/app/packs/src/decidim/clipboard.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-f145b474185c/decidim-core/app/packs/src/decidim/data_picker.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-f145b474185c/decidim-core/app/packs/src/decidim/form_datepicker.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-f145b474185c/decidim-core/app/packs/src/decidim/delayed.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-f145b474185c/decidim-core/app/packs/src/decidim/check_boxes_tree.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-f145b474185c/decidim-core/app/packs/src/decidim/form_filter.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-f145b474185c/decidim-core/app/packs/src/decidim/foundation-datepicker/js/locales/foundation-datepicker.lb.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-f145b474185c/decidim-core/app/packs/src/decidim/gallery.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-f145b474185c/decidim-core/app/packs/src/decidim/input_hashtags.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-f145b474185c/decidim-core/app/packs/src/decidim/input_mentions.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-f145b474185c/decidim-core/app/packs/src/decidim/session_timeouter.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-f145b474185c/decidim-core/app/packs/src/decidim/vendor/foundation-datepicker.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-f145b474185c/decidim-core/app/packs/src/decidim/vendor/tribute.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-f145b474185c/decidim-core/app/packs/src/decidim/vizzs/index.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-f145b474185c/decidim-core/app/packs/src/decidim/vizzs/areachart.js"],"sourcesContent":["$(() => {\n  $(document).on(\"click\", \"a[data-open-url],button[data-open-url]\", (event) => {\n    event.preventDefault();\n    const link = event.currentTarget;\n    const $modal = $(`#${link.dataset.open}`);\n    $modal.html(\"<div class='loading-spinner'></div>\");\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(`<h3>${status}</h3><p>${error}</p>`);\n      }\n    });\n  });\n});\n","/* eslint max-lines: [\"error\", 350] */\n\nimport AutoCompleteJS from \"@tarekraafat/autocomplete.js\";\n\nexport default class AutoComplete {\n  constructor(el, options = {}) {\n    this.element = el;\n    this.stickySelectedSpan = null;\n    this.clearStickySelectionSpan = null;\n    this.stickyHiddenInput = null;\n    this.promptDiv = null;\n    const thresholdTemp = options.threshold || 2;\n    this.options = Object.assign({\n      // Defines name of the hidden input (e.g. assembly_member[user_id])\n      name: null,\n      // Placeholder of the visible input field\n      placeholder: \"\",\n      // Defines what happens after user has selected value from suggestions\n      // sticky - Allows selecting a single value and not editing the value after selected (e.g. as the admin autocomplete fields)\n      // single - Allows selecting a single value and editing the selected text after the selection (e.g. geocoding field)\n      // multi - Allows selecting multiple values\n      // null (default) - Disable selection event handling in this class\n      mode: null,\n      // Defines if we show input help (e.g. \"Type at least three characters to search\") or not.\n      searchPrompt: false,\n      // Defines search prompt message, only shown if showPrompt is enabled!\n      searchPromptText: `Type at least ${thresholdTemp} characters to search`,\n      // Defines items that are selected already when page is loaded before user selects them. (e.g. when form submit fails)\n      selected: null,\n      // Defines how many characters input has to have before we start searching\n      threshold: thresholdTemp,\n      // Defines how many results to show in the autocomplete selection list\n      // by maximum.\n      maxResults: 10,\n      // Defines the data keys against which to match the user input when\n      // searching through the results. For example, when the following\n      // data is returned by the API:\n      //   { id: 123, name: \"John\", nickname: \"john\", __typename: \"User\" }\n      //\n      // You can define the data keys array as [\"name\", \"nickname\"] in\n      // which case the results shown to user would be only those that\n      // have matching text in these defined fields.\n      dataMatchKeys: null,\n      // The data source is a method that gets the callback parameter as\n      // its first argument which should be called with the results array\n      // once they are returned by the API.\n      // For example:\n      //   (query, callback) => {\n      //     (async () => {\n      //       const results = await callAjax(`/api/url?query=${query}`);\n      //       callback(results);\n      //     })();\n      //   }\n      //\n      // Signature: (callback: Function)\n      dataSource: () => [],\n      // Filters the data list returned by the data source before it is shown\n      // to the user. Can be used e.g. to hide already selected values from\n      // the list.\n      dataFilter: null,\n      // Delay in milliseconds how long to wait after user action before\n      // doing a backend request.\n      delay: 200,\n      // Allows modifying the suggested items before they are displayed in the list\n      // Signature: (element: HTMLElement, value: Object)\n      modifyResult: null\n    }, options);\n\n    this.autocomplete = new AutoCompleteJS({\n      selector: () => this.element,\n      diacritics: true,\n      placeHolder: options.placeholder,\n      // Delay (milliseconds) before autocomplete engine starts. It's preventing many queries when user is typing fast.\n      debounce: 200,\n      threshold: this.options.threshold,\n      data: {\n        keys: this.options.dataMatchKeys,\n        src: async (query) => {\n          const fetchResults = () => {\n            return new Promise((resolve) => {\n              this.options.dataSource(query, resolve);\n            });\n          }\n\n          try {\n            return await fetchResults();\n          } catch (error) {\n            return error;\n          }\n        },\n        filter: (list) => {\n          const results = list.filter(\n            (item, idx, arr) => {\n              return arr.findIndex((val) => val.value === item.value) === idx;\n            }\n          );\n\n          if (this.options.dataFilter) {\n            return this.options.dataFilter(results);\n          }\n\n          return results;\n        }\n      },\n      resultsList: {\n        maxResults: this.options.maxResults\n      },\n      resultItem: {\n        element: (item, data) => {\n          if (!this.options.modifyResult) {\n            return;\n          }\n\n          this.options.modifyResult(item, data.value);\n        }\n      },\n      events: {\n        input: {\n          blur: () => {\n            this.promptDiv.style.display = \"none\";\n          }\n        }\n      }\n    });\n\n    this.acWrapper = this.element.closest(\".autoComplete_wrapper\");\n    this.element.ac = this.autocomplete;\n\n    // Stop input field from bubbling open and close events to parent elements,\n    // because foundation closes modal from these events.\n    const stopPropagation = (event) => {\n      event.stopPropagation();\n    }\n    this.element.addEventListener(\"close\", stopPropagation);\n    this.element.addEventListener(\"open\", stopPropagation);\n\n    this.createPromptDiv();\n\n    switch (this.options.mode) {\n    case \"sticky\":\n      this.createStickySelect(this.options.name);\n      break;\n    case \"multi\":\n      this.createMultiSelect(this.options.name);\n      break;\n    default:\n    }\n  }\n\n  setInput(value) {\n    this.autocomplete.input.value = value;\n  }\n\n  handleEvent(event) {\n    switch (this.options.mode) {\n    case \"single\":\n      this.setInput(event.detail.selection.value[event.detail.selection.key]);\n      break;\n    case \"sticky\":\n      this.handleStickyEvents(event);\n      break;\n    case \"multi\":\n      this.handleMultiEvents(event);\n      break;\n    default:\n    }\n  }\n\n  handleMultiEvents(event) {\n    switch (event.type) {\n    case \"selection\":\n      this.addMultiSelectItem(event.detail.selection);\n      break;\n    default:\n    }\n  }\n\n  handleStickyEvents(event) {\n    switch (event.type) {\n    case \"selection\":\n      this.addStickySelectItem(event.detail.selection);\n      break;\n    case \"click\":\n      if (event.target === this.clearStickySelectionSpan) {\n        this.removeStickySelection();\n      }\n      break;\n    case \"keyup\":\n      if (this.stickyHiddenInput.value !== \"\" && event.target === this.element && ([\"Escape\", \"Backspace\", \"Delete\"].includes(event.key) || (/^[a-z0-9]$/i).test(event.key))) {\n        this.removeStickySelection();\n      } else if (this.options.searchPrompt) {\n        if (this.stickyHiddenInput.value === \"\" && this.element.value.length < this.options.threshold) {\n          this.promptDiv.style.display = \"block\";\n        } else {\n          this.promptDiv.style.display = \"none\";\n        }\n      }\n      break;\n    default:\n    }\n  }\n\n  createHiddenInput(value) {\n    const hiddenInput = document.createElement(\"input\");\n    hiddenInput.name = this.options.name;\n    hiddenInput.type = \"hidden\";\n    if (value) {\n      hiddenInput.value = value;\n    }\n    this.acWrapper.prepend(hiddenInput);\n    return hiddenInput;\n  }\n\n  removeStickySelection() {\n    this.stickyHiddenInput.value = \"\";\n    this.element.placeholder = this.options.placeholder;\n    this.clearStickySelectionSpan.style.display = \"none\";\n    this.stickySelectedSpan.style.display = \"none\";\n  }\n\n  addStickySelectItem(selection) {\n    this.stickyHiddenInput.value = selection.value.value;\n    this.element.placeholder = \"\";\n    this.stickySelectedSpan.innerHTML = selection.value[selection.key];\n    this.stickySelectedSpan.style.display = \"block\";\n    this.clearStickySelectionSpan.style.display = \"block\";\n    this.setInput(\"\");\n  }\n\n  addMultiSelectItem(selection) {\n    this.setInput(\"\");\n    const chosen = document.createElement(\"span\");\n    chosen.classList.add(\"label\", \"primary\", \"autocomplete__selected-item\", \"multi\");\n    chosen.innerHTML = selection.value[selection.key];\n    const clearSelection = document.createElement(\"span\");\n    clearSelection.classList.add(\"clear-multi-selection\");\n    clearSelection.innerHTML = \"&times;\";\n    clearSelection.setAttribute(\"data-remove\", selection.value.value);\n    clearSelection.addEventListener(\"click\", (evt) => {\n      const hiddenInput = this.acWrapper.querySelector(`input[type='hidden'][value='${selection.value.value}']`);\n      if (hiddenInput) {\n        hiddenInput.remove();\n        evt.target.parentElement.remove();\n      }\n    });\n    chosen.appendChild(clearSelection);\n\n    const multiSelectWrapper = this.acWrapper.querySelector(\".multiselect\");\n    const inputContainer = multiSelectWrapper.querySelector(\"span.input-container\");\n    multiSelectWrapper.insertBefore(chosen, inputContainer);\n    this.createHiddenInput(selection.value.value);\n  }\n\n  createStickySelect() {\n    this.stickySelectedSpan = document.createElement(\"span\");\n    this.stickySelectedSpan.classList.add(\"autocomplete__selected-item\", \"sticky\");\n    this.stickySelectedSpan.style.display = \"none\";\n    this.stickySelectedSpan.addEventListener(\"click\", () => this.element.focus());\n    this.stickyHiddenInput = this.createHiddenInput();\n\n    this.clearStickySelectionSpan = document.createElement(\"span\");\n    this.clearStickySelectionSpan.className = \"clear-sticky-selection\";\n    this.clearStickySelectionSpan.innerHTML = \"&times;\";\n    this.clearStickySelectionSpan.style.display = \"none\";\n    this.clearStickySelectionSpan.addEventListener(\"click\", this);\n\n    this.element.addEventListener(\"selection\", this);\n    this.element.addEventListener(\"keyup\", this);\n\n    this.acWrapper.insertBefore(this.clearStickySelectionSpan, this.element);\n    this.acWrapper.insertBefore(this.stickySelectedSpan, this.element);\n    if (this.options.selected) {\n      this.addStickySelectItem(this.options.selected);\n    }\n  }\n\n  createMultiSelect() {\n    const multiSelectWrapper = document.createElement(\"div\");\n    multiSelectWrapper.classList.add(\"multiselect\");\n\n    const inputContainer = document.createElement(\"span\");\n    inputContainer.classList.add(\"input-container\");\n\n    multiSelectWrapper.appendChild(inputContainer);\n    this.acWrapper.prepend(multiSelectWrapper);\n    inputContainer.appendChild(this.element);\n\n    this.element.addEventListener(\"selection\", this);\n    multiSelectWrapper.addEventListener(\"click\", () => {\n      this.element.focus();\n    })\n\n    if (this.options.selected) {\n      this.options.selected.forEach((selection) => {\n        this.addMultiSelectItem(selection);\n      })\n    }\n  }\n\n  createPromptDiv() {\n    this.promptDiv = document.createElement(\"div\");\n    this.promptDiv.classList.add(\"search-prompt\");\n    this.promptDiv.style.display = \"none\";\n    this.promptDiv.innerHTML = this.options.searchPromptText;\n    this.acWrapper.appendChild(this.promptDiv);\n  }\n}\n","import select from \"select\";\n\n/**\n * This script provides clipboard copy functionality to elements like buttons and links.\n * The element to be copied from must be specified using a `data` attribute, and the\n * target element can be a form input, textarea, or any other HTML element containing text.\n *\n * Usage:\n *   1. Create the copy trigger element (button or link):\n *     <button class=\"button\"\n *      data-clipboard-copy=\"#target-element\"\n *      data-clipboard-copy-label=\"Copied!\"\n *      data-clipboard-copy-message=\"The text was successfully copied to clipboard.\"\n *      aria-label=\"Copy the text to clipboard\">\n *        <%= icon \"clipboard\", role: \"presentation\", \"aria-hidden\": true %>\n *        Copy to clipboard\n *    </button>\n *    OR\n *    <a href=\"#\" class=\"copy-link\"\n *      data-clipboard-copy=\"#target-element\"\n *      data-clipboard-copy-label=\"Copied!\"\n *      data-clipboard-copy-message=\"The text was successfully copied to clipboard.\"\n *      aria-label=\"Copy the text to clipboard\">\n *        <%= icon \"clipboard\", role: \"presentation\", \"aria-hidden\": true %>\n *        Copy link\n *    </a>\n *\n *   2. Ensure the target element exists on the page:\n *     <input id=\"target-element\" type=\"text\" value=\"This text will be copied.\">\n *     OR\n *     <textarea id=\"target-element\">This text will be copied.</textarea>\n *     OR\n *     <div id=\"target-element\">This text will be copied.</div>\n *\n * Options through data attributes:\n * - `data-clipboard-copy` = The jQuery selector for the target element (input, textarea, or any HTML element)\n *   from which text will be copied. If this element does not contain any visible text\n *   (for example, an image), this selector will be used to place the confirmation message.\n * - `data-clipboard-content` = The specific text that will be copied. If this attribute is empty or not provided,\n *   the inner text or value of the target input/element will be used instead.\n * - `data-clipboard-copy-label` = The temporary label that will be shown in the copy trigger element\n *   (button or link) after a successful copy operation.\n * - `data-clipboard-copy-message` = The text message that will be announced to screen readers after a successful copy.\n *\n * The script supports:\n * - Copying text from an input or textarea using a selection.\n * - Copying text from any other element by grabbing its inner text.\n * - Temporarily changing the label of the copy button or target element to indicate success.\n * - Announcing success messages to screen readers.\n *\n * Note: If the target is an input or textarea, it will not replace its value with the success label;\n * the success label appears in the button or link text only.\n */\n\nconst CLIPBOARD_COPY_TIMEOUT = 5000;\n\nconst getSelectedText = ($el, $input) => {\n  // Get the text to be copied. If 'data-clipboard-content' is not specified,\n  // use the content of the target element.\n  let selectedText = $el.data(\"clipboard-content\") || \"\";\n\n  if (selectedText === \"\" && $input.length > 0) {\n    if ($input.is(\"input, textarea, select\")) {\n      // If the target is an input, textarea, or select, use select library to get text.\n      selectedText = select($input[0]);\n    } else {\n      // If the target is any other element, use its text.\n      selectedText = $input.text();\n    }\n  }\n\n  return selectedText;\n};\n\nconst performCopy = (selectedText, $el) => {\n  // Move the selected text to clipboard.\n  const $temp = $(`<textarea>${selectedText}</textarea>`).css({\n    width: 1,\n    height: 1\n  });\n  $el.after($temp);\n  $temp.select();\n\n  const copyDone = () => {\n    $temp.remove();\n    $el.focus();\n  };\n\n  try {\n    if (!document.execCommand(\"copy\")) {\n      return false;\n    }\n  } catch (err) {\n    copyDone();\n    return false;\n  }\n\n  copyDone();\n  return true;\n};\n\nconst updateLabel = ($el, $input, label) => {\n  if (label) {\n    let to = $el.data(\"clipboard-copy-label-timeout\");\n    if (to) {\n      clearTimeout(to);\n    }\n\n    if (!$el.data(\"clipboard-copy-label-original\")) {\n      $el.data(\"clipboard-copy-label-original\", $el.html());\n    }\n\n    // Temporarily change the element's text\n    $el.html(label);\n\n    // Restore the original text after a timeout\n    to = setTimeout(() => {\n      $el.html($el.data(\"clipboard-copy-label-original\"));\n      $el.removeData(\"clipboard-copy-label-original\");\n      $el.removeData(\"clipboard-copy-label-timeout\");\n    }, CLIPBOARD_COPY_TIMEOUT);\n\n    $el.data(\"clipboard-copy-label-timeout\", to);\n  }\n};\n\nconst announceToScreenReader = ($el, message) => {\n  let announcementMessage = message;\n\n  if (announcementMessage) {\n    let $msg = $el.data(\"clipboard-message-element\");\n    if ($msg) {\n      if ($msg.html() === message) {\n        // Try to hint the screen reader to re-read the text in the message element.\n        announcementMessage += \"&nbsp;\";\n      }\n    } else {\n      $msg = $('<div aria-role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"sr-only clipboard-announcement\"></div>');\n      $el.after($msg);\n      $el.data(\"clipboard-message-element\", $msg);\n    }\n\n    // Add the non-breaking space always to content to try to force the screen reader to reannounce the added text.\n    $msg.html(announcementMessage);\n  }\n};\n\n$(() => {\n  $(document).on(\"click\", \"[data-clipboard-copy]\", (ev) => {\n    const $el = $(ev.currentTarget);\n\n    if (!$el.data(\"clipboard-copy\") || $el.data(\"clipboard-copy\").length < 1) {\n      return;\n    }\n\n    const $input = $($el.data(\"clipboard-copy\"));\n\n    const selectedText = getSelectedText($el, $input);\n\n    if (!selectedText || selectedText.length < 1) {\n      return;\n    }\n\n    const copySuccess = performCopy(selectedText, $el);\n\n    if (!copySuccess) {\n      return;\n    }\n\n    const label = $el.data(\"clipboard-copy-label\");\n\n    if ($el.is(\"button\")) {\n      updateLabel($el, $el, label);\n    } else if ($el.is(\"a\") && $input.length > 0) {\n      updateLabel($input, $input, label);\n    }\n\n    const message = $el.data(\"clipboard-copy-message\");\n    announceToScreenReader($el, message);\n  });\n});\n","export default class DataPicker {\n  constructor(pickers) {\n    this.modal = this._createModalContainer();\n    this.modal.appendTo($(\"body\"));\n    this.current = null;\n\n    pickers.each((_index, picker) => {\n      this.activate(picker);\n    });\n  }\n\n  activate(picker) {\n    let $picker = $(picker);\n\n    this._setCurrentPicker($picker, null);\n\n    let input = \"hidden\",\n        name = this.current.name,\n        values = this.current.values;\n\n    if (this.current.multiple) {\n      name += \"[]\";\n    }\n\n    $(\"div\", values).each((_index2, div) => {\n      let value = $(\"a\", div).data(\"picker-value\");\n      $(div).prepend($(`<input type=\"${input}\" checked name=\"${name}\" value=\"${value}\"/>`));\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 = '<div class=\"scope-picker picker-header\"><h6 id=\"data_picker-title\" class=\"h2\"></h6></div>';\n\n    return $(`<div class=\"small reveal\" id=\"data_picker-modal\" aria-hidden=\"true\" aria-live=\"assertive\" role=\"dialog\" aria-labelledby=\"data_picker-title\" data-reveal data-multiple-opened=\"true\">\n             <div class=\"data_picker-modal-content\">${headerHtml}</div>\n             <button class=\"close-button\" data-close type=\"button\" data-reveal-id=\"data_picker-modal\"><span aria-hidden=\"true\">&times;</span></button>\n             </div>`);\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(`&times;&nbsp;${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 = $(`<div><input type=\"${input}\" checked name=\"${name}\"/><a href=\"${data.url}\" data-picker-value=\"${data.value}\" class=\"label primary\">&times;&nbsp;${dataText}</a></div>`);\n      } else {\n        choosenOption = $(`<div><input type=\"${input}\" checked name=\"${name}\"/><a href=\"${data.url}\" data-picker-value=\"${data.value}\">${dataText}</a></div>`);\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 = () => `<li>${nodatafound}</li>`;\n  }\n\n  // Listener for the event triggered by quilljs\n  let cursor = \"\";\n  $hashtagContainer.on(\"quill-position\", function(event) {\n    if (event.detail !== null) {\n      // When replacing the text content after selecting a hashtag, we only need\n      // to know the hashtag's start position as that is the point which we want\n      // to replace.\n      let quill = event.target.__quill;\n      if (quill.getText(event.detail.index - 1, 1) === \"#\") {\n        cursor = event.detail.index;\n      }\n    }\n  });\n\n  /* eslint no-use-before-define: [\"error\", { \"variables\": false }]*/\n  let remoteSearch = function(text, cb) {\n    $.post(window.Decidim.config.get(\"api_path\"), {query: `{hashtags(name:\"${text}\") {name}}`}).\n\n      then((response) => {\n        let data = response.data.hashtags || {};\n        cb(data)\n      }).fail(function() {\n        cb([])\n      }).always(() => {\n      // This function runs Tribute every single time you type something\n      // So we must evalute DOM properties after each\n        const $parent = $(tribute.current.element).parent()\n        $parent.addClass(\"is-active\")\n\n        // We need to move the container to the wrapper selected\n        const $tribute = $parent.find(\".tribute-container\");\n        // Remove the inline styles, relative to absolute positioning\n        $tribute.removeAttr(\"style\");\n      })\n  };\n\n  // tribute.js docs - http://github.com/zurb/tribute\n  /* global Tribute*/\n  let tribute = new Tribute({\n    trigger: \"#\",\n    values: function (text, cb) {\n      remoteSearch(text, (hashtags) => cb(hashtags));\n    },\n    positionMenu: true,\n    menuContainer: null,\n    fillAttr: \"name\",\n    noMatchTemplate: noMatchTemplate,\n    lookup: (item) => item.name,\n    selectTemplate: function(item) {\n      if (typeof item === \"undefined\") {\n        return null;\n      }\n      if (this.range.isContentEditable(this.current.element)) {\n        // Check quill.js\n        if ($(this.current.element).hasClass(\"ql-editor\")) {\n          let editorContainer = $(this.current.element).parent().get(0);\n          let quill = editorContainer.__quill;\n          quill.insertText(cursor - 1, `#${item.original.name} `, Quill.sources.API);\n          // cursor position + hashtag length + \"#\" sign + space\n          let position = cursor + item.original.name.length + 2;\n\n          let next = 0;\n          if (quill.getLength() > position) {\n            next = position\n          } else {\n            next = quill.getLength() - 1\n          }\n          // Workaround https://github.com/quilljs/quill/issues/731\n          setTimeout(function () {\n            quill.setSelection(next, 0);\n          }, 500);\n\n          return \"\"\n        }\n        return `<span contenteditable=\"false\">#${item.original.name}</span>`;\n      }\n      return `#${item.original.name}`;\n    },\n    menuItemTemplate: function(item) {\n      let tpl = `<strong>${item.original.name}</strong>`;\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 = () => `<li>${nodatafound}</li>`;\n  }\n\n  // Listener for the event triggered by quilljs\n  let cursor = \"\";\n  $mentionContainer.on(\"quill-position\", (event) => {\n    if (event.detail !== null) {\n      // When replacing the text content after selecting a hashtag, we only need\n      // to know the hashtag's start position as that is the point which we want\n      // to replace.\n      let quill = event.target.__quill;\n      if (quill.getText(event.detail.index - 1, 1) === \"@\") {\n        cursor = event.detail.index;\n      }\n    }\n  });\n\n  // Returns a function, that, as long as it continues to be invoked, will not\n  // be triggered. The function will be called after it stops being called for\n  // N milliseconds\n  /* eslint no-invalid-this: 0 */\n  /* eslint consistent-this: 0 */\n  /* eslint prefer-reflect: 0 */\n  const debounce = function(callback, wait) {\n    let timeout = null;\n    return (...args) => {\n      const context = this;\n      clearTimeout(timeout);\n      timeout = setTimeout(() => callback.apply(context, args), wait);\n    };\n  }\n\n  /* eslint no-use-before-define: [\"error\", { \"variables\": false }]*/\n  let remoteSearch = function(text, cb) {\n    let query = `{users(filter:{wildcard:\"${text}\"}){nickname,name,avatarUrl,__typename,...on UserGroup{membersCount}}}`;\n    $.post(window.Decidim.config.get(\"api_path\"), {query: query}).\n      then((response) => {\n        let data = response.data.users || {};\n        cb(data)\n      }).fail(function() {\n        cb([])\n      }).always(() => {\n      // This function runs Tribute every single time you type something\n      // So we must evalute DOM properties after each\n        const $parent = $(tribute.current.element).parent();\n        $parent.addClass(\"is-active\");\n\n        // We need to move the container to the wrapper selected\n        const $tribute = $parent.find(\".tribute-container\");\n        // Remove the inline styles, relative to absolute positioning\n        $tribute.removeAttr(\"style\");\n      })\n  };\n\n  // tribute.js docs - http://github.com/zurb/tribute\n  /* global Tribute*/\n  let tribute = new Tribute({\n    trigger: \"@\",\n    // avoid overloading the API if the user types too fast\n    values: debounce(function (text, cb) {\n      remoteSearch(text, (users) => cb(users));\n    }, 250),\n    positionMenu: true,\n    menuContainer: null,\n    allowSpaces: true,\n    menuItemLimit: 5,\n    fillAttr: \"nickname\",\n    selectClass: \"highlight\",\n    noMatchTemplate: noMatchTemplate,\n    lookup: (item) => item.nickname + item.name,\n    selectTemplate: function(item) {\n      if (typeof item === \"undefined\") {\n        return null;\n      }\n      if (this.range.isContentEditable(this.current.element)) {\n        // Check quill.js\n        if ($(this.current.element).hasClass(\"ql-editor\")) {\n          let editorContainer = $(this.current.element).parent().get(0);\n          let quill = editorContainer.__quill;\n          quill.insertText(cursor - 1, `${item.original.nickname} `, Quill.sources.API);\n          // cursor position + nickname length + \"@\" sign + space\n          let position = cursor + item.original.nickname.length + 2\n\n          let next = 0;\n          if (quill.getLength() > position) {\n            next = position\n          } else {\n            next = quill.getLength() - 1\n          }\n          // Workaround https://github.com/quilljs/quill/issues/731\n          setTimeout(function () {\n            quill.setSelection(next, 0);\n          }, 500);\n\n          return \"\"\n        }\n        return `<span contenteditable=\"false\">${item.original.nickname}</span>`;\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 = `<span class=\"is-group\">${item.original.membersCount}x <svg class=\"icon--members icon\"><use href=\"${iconsPath}#icon-members\"/></svg></span>`;\n      }\n      return `<div class=\"tribute-item ${item.original.__typename}\">\n      <span class=\"author__avatar\"><img src=\"${item.original.avatarUrl}\" alt=\"author-avatar\"></span>\n        <strong>${item.original.nickname}</strong>\n        <small>${item.original.name}</small>\n        ${svg}\n      </div>`;\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 || `<i class=\"${this.faCSSprefix} ${this.faCSSprefix}-chevron-left fi-arrow-left\"/>`;\n    this.rightArrow = options.rightArrow || `<i class=\"${this.faCSSprefix} ${this.faCSSprefix}-chevron-right fi-arrow-right\"/>`;\n    this.closeIcon = options.closeIcon || `<i class=\"${this.faCSSprefix} ${this.faCSSprefix}-remove ${this.faCSSprefix}-times fi-x\"></i>`;\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 = \"<tr>\";\n      if (this.calendarWeeks) {\n        let cell = '<th class=\"cw\">&nbsp;</th>';\n        html += cell;\n        this.picker.find(\".datepicker-days thead tr:first-child\").prepend(cell);\n      }\n      while (dowCnt < this.weekStart + 7) {\n        html += `<th class=\"dow\">${dates[this.language].daysMin[(dowCnt++) % 7]}</th>`;\n      }\n      html += \"</tr>\";\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 += `<span class=\"month\">${dates[this.language].monthsShort[i++]}</span>`;\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(\"<tr>\");\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(`<td class=\"cw\">${calWeek}</td>`);\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(`<td class=\"day${clsName}\">${prevMonth.getUTCDate()}</td>`);\n        if (prevMonth.getUTCDay() == this.weekEnd) {\n          html.push(\"</tr>\");\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(`<span class=\"hour${clsName}\">${i}:00</span>`);\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(`<span class=\"minute${clsName}\">${hours}:${i < 10 ? `0${i}` : i}</span>`);\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 += `<span class=\"year${i == -1 || i == 10 ? \" old\" : \"\"}${currentYear == year ? \" active\" : \"\"}${year < startYear || year > endYear ? \" disabled\" : \"\"}\">${year}</span>`;\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 (`${\"<thead>\" +\n            \"<tr>\" +\n            '<th class=\"prev\">'}${leftArrow}</th>` +\n            \"<th colspan=\\\"5\\\" class=\\\"date-switch\\\"></th>\" +\n            `<th class=\"next\">${rightArrow}</th>` +\n            \"</tr>\" +\n            \"</thead>\")},\n    contTemplate: '<tbody><tr><td colspan=\"7\"></td></tr></tbody>',\n    footTemplate: '<tfoot><tr><th colspan=\"7\" class=\"today\"></th></tr></tfoot>'\n  };\n  DPGlobal.template = function(leftArrow, rightArrow, closeIcon) {return (`${'<div class=\"datepicker\">' +\n        '<div class=\"datepicker-minutes\">' +\n        '<table class=\" table-condensed\">'}${\n    DPGlobal.headTemplate(leftArrow, rightArrow)\n  }${DPGlobal.contTemplate\n  }${DPGlobal.footTemplate\n  }</table>` +\n        \"</div>\" +\n        \"<div class=\\\"datepicker-hours\\\">\" +\n        `<table class=\" table-condensed\">${\n          DPGlobal.headTemplate(leftArrow, rightArrow)\n        }${DPGlobal.contTemplate\n        }${DPGlobal.footTemplate\n        }</table>` +\n        \"</div>\" +\n        \"<div class=\\\"datepicker-days\\\">\" +\n        `<table class=\" table-condensed\">${\n          DPGlobal.headTemplate(leftArrow, rightArrow)\n        }<tbody></tbody>${\n          DPGlobal.footTemplate\n        }</table>` +\n        \"</div>\" +\n        \"<div class=\\\"datepicker-months\\\">\" +\n        `<table class=\"table-condensed\">${\n          DPGlobal.headTemplate(leftArrow, rightArrow)\n        }${DPGlobal.contTemplate\n        }${DPGlobal.footTemplate\n        }</table>` +\n        \"</div>\" +\n        \"<div class=\\\"datepicker-years\\\">\" +\n        `<table class=\"table-condensed\">${\n          DPGlobal.headTemplate(leftArrow, rightArrow)\n        }${DPGlobal.contTemplate\n        }${DPGlobal.footTemplate\n        }</table>` +\n        \"</div>\" +\n        `<a class=\"button datepicker-close tiny alert right\" style=\"width:auto;\">${closeIcon}</a>` +\n        \"</div>\")};\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<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nrequire(\"./utils\");\n\nvar _TributeEvents = _interopRequireDefault(require(\"./TributeEvents\"));\n\nvar _TributeMenuEvents = _interopRequireDefault(require(\"./TributeMenuEvents\"));\n\nvar _TributeRange = _interopRequireDefault(require(\"./TributeRange\"));\n\nvar _TributeSearch = _interopRequireDefault(require(\"./TributeSearch\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\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 Tribute =\n/*#__PURE__*/\nfunction () {\n  function Tribute(_ref) {\n    var _this = this;\n\n    var _ref$values = _ref.values,\n        values = _ref$values === void 0 ? null : _ref$values,\n        _ref$iframe = _ref.iframe,\n        iframe = _ref$iframe === void 0 ? null : _ref$iframe,\n        _ref$selectClass = _ref.selectClass,\n        selectClass = _ref$selectClass === void 0 ? 'highlight' : _ref$selectClass,\n        _ref$trigger = _ref.trigger,\n        trigger = _ref$trigger === void 0 ? '@' : _ref$trigger,\n        _ref$autocompleteMode = _ref.autocompleteMode,\n        autocompleteMode = _ref$autocompleteMode === void 0 ? false : _ref$autocompleteMode,\n        _ref$selectTemplate = _ref.selectTemplate,\n        selectTemplate = _ref$selectTemplate === void 0 ? null : _ref$selectTemplate,\n        _ref$menuItemTemplate = _ref.menuItemTemplate,\n        menuItemTemplate = _ref$menuItemTemplate === void 0 ? null : _ref$menuItemTemplate,\n        _ref$lookup = _ref.lookup,\n        lookup = _ref$lookup === void 0 ? 'key' : _ref$lookup,\n        _ref$fillAttr = _ref.fillAttr,\n        fillAttr = _ref$fillAttr === void 0 ? 'value' : _ref$fillAttr,\n        _ref$collection = _ref.collection,\n        collection = _ref$collection === void 0 ? null : _ref$collection,\n        _ref$menuContainer = _ref.menuContainer,\n        menuContainer = _ref$menuContainer === void 0 ? null : _ref$menuContainer,\n        _ref$noMatchTemplate = _ref.noMatchTemplate,\n        noMatchTemplate = _ref$noMatchTemplate === void 0 ? null : _ref$noMatchTemplate,\n        _ref$requireLeadingSp = _ref.requireLeadingSpace,\n        requireLeadingSpace = _ref$requireLeadingSp === void 0 ? true : _ref$requireLeadingSp,\n        _ref$allowSpaces = _ref.allowSpaces,\n        allowSpaces = _ref$allowSpaces === void 0 ? false : _ref$allowSpaces,\n        _ref$replaceTextSuffi = _ref.replaceTextSuffix,\n        replaceTextSuffix = _ref$replaceTextSuffi === void 0 ? null : _ref$replaceTextSuffi,\n        _ref$positionMenu = _ref.positionMenu,\n        positionMenu = _ref$positionMenu === void 0 ? true : _ref$positionMenu,\n        _ref$spaceSelectsMatc = _ref.spaceSelectsMatch,\n        spaceSelectsMatch = _ref$spaceSelectsMatc === void 0 ? false : _ref$spaceSelectsMatc,\n        _ref$searchOpts = _ref.searchOpts,\n        searchOpts = _ref$searchOpts === void 0 ? {} : _ref$searchOpts,\n        _ref$menuItemLimit = _ref.menuItemLimit,\n        menuItemLimit = _ref$menuItemLimit === void 0 ? null : _ref$menuItemLimit;\n\n    _classCallCheck(this, Tribute);\n\n    this.autocompleteMode = autocompleteMode;\n    this.menuSelected = 0;\n    this.current = {};\n    this.inputEvent = false;\n    this.isActive = false;\n    this.menuContainer = menuContainer;\n    this.allowSpaces = allowSpaces;\n    this.replaceTextSuffix = replaceTextSuffix;\n    this.positionMenu = positionMenu;\n    this.hasTrailingSpace = false;\n    this.spaceSelectsMatch = spaceSelectsMatch;\n\n    if (this.autocompleteMode) {\n      trigger = '';\n      allowSpaces = false;\n    }\n\n    if (values) {\n      this.collection = [{\n        // symbol that starts the lookup\n        trigger: trigger,\n        // is it wrapped in an iframe\n        iframe: iframe,\n        // class applied to selected item\n        selectClass: selectClass,\n        // function called on select that retuns the content to insert\n        selectTemplate: (selectTemplate || Tribute.defaultSelectTemplate).bind(this),\n        // function called that returns content for an item\n        menuItemTemplate: (menuItemTemplate || Tribute.defaultMenuItemTemplate).bind(this),\n        // function called when menu is empty, disables hiding of menu.\n        noMatchTemplate: function (t) {\n          if (typeof t === 'function') {\n            return t.bind(_this);\n          }\n\n          return noMatchTemplate || function () {\n            return '';\n          }.bind(_this);\n        }(noMatchTemplate),\n        // column to search against in the object\n        lookup: lookup,\n        // column that contains the content to insert by default\n        fillAttr: fillAttr,\n        // array of objects or a function returning an array of objects\n        values: values,\n        requireLeadingSpace: requireLeadingSpace,\n        searchOpts: searchOpts,\n        menuItemLimit: menuItemLimit\n      }];\n    } else if (collection) {\n      if (this.autocompleteMode) console.warn('Tribute in autocomplete mode does not work for collections');\n      this.collection = collection.map(function (item) {\n        return {\n          trigger: item.trigger || trigger,\n          iframe: item.iframe || iframe,\n          selectClass: item.selectClass || selectClass,\n          selectTemplate: (item.selectTemplate || Tribute.defaultSelectTemplate).bind(_this),\n          menuItemTemplate: (item.menuItemTemplate || Tribute.defaultMenuItemTemplate).bind(_this),\n          // function called when menu is empty, disables hiding of menu.\n          noMatchTemplate: function (t) {\n            if (typeof t === 'function') {\n              return t.bind(_this);\n            }\n\n            return null;\n          }(noMatchTemplate),\n          lookup: item.lookup || lookup,\n          fillAttr: item.fillAttr || fillAttr,\n          values: item.values,\n          requireLeadingSpace: item.requireLeadingSpace,\n          searchOpts: item.searchOpts || searchOpts,\n          menuItemLimit: item.menuItemLimit || menuItemLimit\n        };\n      });\n    } else {\n      throw new Error('[Tribute] No collection specified.');\n    }\n\n    new _TributeRange[\"default\"](this);\n    new _TributeEvents[\"default\"](this);\n    new _TributeMenuEvents[\"default\"](this);\n    new _TributeSearch[\"default\"](this);\n  }\n\n  _createClass(Tribute, [{\n    key: \"triggers\",\n    value: function triggers() {\n      return this.collection.map(function (config) {\n        return config.trigger;\n      });\n    }\n  }, {\n    key: \"attach\",\n    value: function attach(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._attach(el[i]);\n        }\n      } else {\n        this._attach(el);\n      }\n    }\n  }, {\n    key: \"_attach\",\n    value: function _attach(el) {\n      if (el.hasAttribute('data-tribute')) {\n        console.warn('Tribute was already bound to ' + el.nodeName);\n      }\n\n      this.ensureEditable(el);\n      this.events.bind(el);\n      el.setAttribute('data-tribute', true);\n    }\n  }, {\n    key: \"ensureEditable\",\n    value: function ensureEditable(element) {\n      if (Tribute.inputTypes().indexOf(element.nodeName) === -1) {\n        if (element.contentEditable) {\n          element.contentEditable = true;\n        } else {\n          throw new Error('[Tribute] Cannot bind to ' + element.nodeName);\n        }\n      }\n    }\n  }, {\n    key: \"createMenu\",\n    value: function createMenu() {\n      var wrapper = this.range.getDocument().createElement('div'),\n          ul = this.range.getDocument().createElement('ul');\n      wrapper.className = 'tribute-container';\n      wrapper.setAttribute('aria-expanded','true');\n      ul.setAttribute('id','results');\n      wrapper.appendChild(ul);\n\n      if (this.menuContainer) {\n        return this.menuContainer.appendChild(wrapper);\n      }\n\n      return this.range.getDocument().body.appendChild(wrapper);\n    }\n  }, {\n    key: \"showMenuFor\",\n    value: function showMenuFor(element, scrollTo) {\n      var _this2 = this;\n\n      // Only proceed if menu isn't already shown for the current element & mentionText\n      if (this.isActive && this.current.element === element && this.current.mentionText === this.currentMentionTextSnapshot) {\n        return;\n      }\n\n      this.currentMentionTextSnapshot = this.current.mentionText; // create the menu if it doesn't exist.\n\n      if (!this.menu) {\n        this.menu = this.createMenu();\n        element.tributeMenu = this.menu;\n        this.menuEvents.bind(this.menu);\n      }\n\n      this.isActive = true;\n      this.menuSelected = 0;\n\n      if (!this.current.mentionText) {\n        this.current.mentionText = '';\n      }\n\n      var processValues = function processValues(values) {\n        // Tribute may not be active any more by the time the value callback returns\n        if (!_this2.isActive) {\n          return;\n        }\n\n        var items = _this2.search.filter(_this2.current.mentionText, values, {\n          pre: _this2.current.collection.searchOpts.pre || '<span>',\n          post: _this2.current.collection.searchOpts.post || '</span>',\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 '<span class=\"tribute-mention\">' + (this.current.collection.trigger + item.original[this.current.collection.fillAttr]) + '</span>';\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 <li> container for the click');\n          }\n        }\n\n        if (li.getElementsByClassName(\"disabled-tribute-element\")[0]==undefined){\n          tribute.selectItemAtIndex(li.getAttribute('data-index'), event);\n          tribute.hideMenu(); // TODO: should fire with externalTrigger and target is outside of menu\n        }\n      } else if (tribute.current.element && !tribute.current.externalTrigger) {\n        tribute.current.externalTrigger = false;\n        setTimeout(function () {\n          return tribute.hideMenu();\n        });\n      }\n    }\n  }, {\n    key: \"keyup\",\n    value: function keyup(instance, event) {\n      if (instance.inputEvent) {\n        instance.inputEvent = false;\n      }\n\n      instance.updateSelection(this);\n      if (event.keyCode === 27) return;\n\n      if (!instance.tribute.allowSpaces && instance.tribute.hasTrailingSpace) {\n        instance.tribute.hasTrailingSpace = false;\n        instance.commandEvent = true;\n        instance.callbacks()[\"space\"](event, this);\n        return;\n      }\n\n      if (!instance.tribute.isActive) {\n        if (instance.tribute.autocompleteMode) {\n          instance.callbacks().triggerChar(event, this, '');\n        } else {\n          var keyCode = instance.getKeyCode(instance, this, event);\n          if (isNaN(keyCode) || !keyCode) return;\n          var trigger = instance.tribute.triggers().find(function (trigger) {\n            return trigger.charCodeAt(0) === keyCode;\n          });\n\n          if (typeof trigger !== 'undefined') {\n            instance.callbacks().triggerChar(event, this, trigger);\n          }\n        }\n      }\n\n      if ((instance.tribute.current.trigger || instance.tribute.autocompleteMode) && instance.commandEvent === false || instance.tribute.isActive && event.keyCode === 8) {\n        instance.tribute.showMenuFor(this, true);\n      }\n    }\n  }, {\n    key: \"shouldDeactivate\",\n    value: function shouldDeactivate(event) {\n      if (!this.tribute.isActive) return false;\n\n      if (this.tribute.current.mentionText.length === 0) {\n        var eventKeyPressed = false;\n        TributeEvents.keys().forEach(function (o) {\n          if (event.keyCode === o.key) eventKeyPressed = true;\n        });\n        return !eventKeyPressed;\n      }\n\n      return false;\n    }\n  }, {\n    key: \"getKeyCode\",\n    value: function getKeyCode(instance, el, event) {\n      var _char;\n\n      var tribute = instance.tribute;\n      var info = tribute.range.getTriggerInfo(false, tribute.hasTrailingSpace, true, tribute.allowSpaces, tribute.autocompleteMode);\n\n      if (info) {\n        return info.mentionTriggerChar.charCodeAt(0);\n      } else {\n        return false;\n      }\n    }\n  }, {\n    key: \"updateSelection\",\n    value: function updateSelection(el) {\n      this.tribute.current.element = el;\n      var info = this.tribute.range.getTriggerInfo(false, this.tribute.hasTrailingSpace, true, this.tribute.allowSpaces, this.tribute.autocompleteMode);\n\n      if (info) {\n        this.tribute.current.selectedPath = info.mentionSelectedPath;\n        this.tribute.current.mentionText = info.mentionText;\n        this.tribute.current.selectedOffset = info.mentionSelectedOffset;\n      }\n    }\n  }, {\n    key: \"callbacks\",\n    value: function callbacks() {\n      var _this = this;\n\n      return {\n        triggerChar: function triggerChar(e, el, trigger) {\n          var tribute = _this.tribute;\n          tribute.current.trigger = trigger;\n          var collectionItem = tribute.collection.find(function (item) {\n            return item.trigger === trigger;\n          });\n          tribute.current.collection = collectionItem;\n          if (tribute.inputEvent) tribute.showMenuFor(el, true);\n        },\n        enter: function enter(e, el) {\n          // choose selection\n          if (_this.tribute.isActive && _this.tribute.current.filteredItems) {\n            e.preventDefault();\n            e.stopPropagation();\n            setTimeout(function () {\n              _this.tribute.selectItemAtIndex(_this.tribute.menuSelected, e);\n\n              _this.tribute.hideMenu();\n            }, 0);\n          }\n        },\n        escape: function escape(e, el) {\n          if (_this.tribute.isActive) {\n            e.preventDefault();\n            e.stopPropagation();\n            _this.tribute.isActive = false;\n\n            _this.tribute.hideMenu();\n          }\n        },\n        tab: function tab(e, el) {\n          // choose first match\n          _this.callbacks().enter(e, el);\n        },\n        space: function space(e, el) {\n          if (_this.tribute.isActive) {\n            if (_this.tribute.spaceSelectsMatch) {\n              _this.callbacks().enter(e, el);\n            } else if (!_this.tribute.allowSpaces) {\n              e.stopPropagation();\n              setTimeout(function () {\n                _this.tribute.hideMenu();\n\n                _this.tribute.isActive = false;\n              }, 0);\n            }\n          }\n        },\n        up: function up(e, el) {\n          // navigate up ul\n          if (_this.tribute.isActive && _this.tribute.current.filteredItems) {\n            e.preventDefault();\n            e.stopPropagation();\n            var count = _this.tribute.current.filteredItems.length,\n                selected = _this.tribute.menuSelected;\n\n            if (count > selected && selected > 0) {\n              _this.tribute.menuSelected--;\n\n              _this.setActiveLi();\n            } else if (selected === 0) {\n              _this.tribute.menuSelected = count - 1;\n\n              _this.setActiveLi();\n\n              _this.tribute.menu.scrollTop = _this.tribute.menu.scrollHeight;\n            }\n          }\n        },\n        down: function down(e, el) {\n          // navigate down ul\n          if (_this.tribute.isActive && _this.tribute.current.filteredItems) {\n            e.preventDefault();\n            e.stopPropagation();\n            var count = _this.tribute.current.filteredItems.length - 1,\n                selected = _this.tribute.menuSelected;\n\n            if (count > selected) {\n              _this.tribute.menuSelected++;\n\n              _this.setActiveLi();\n            } else if (count === selected) {\n              _this.tribute.menuSelected = 0;\n\n              _this.setActiveLi();\n\n              _this.tribute.menu.scrollTop = 0;\n            }\n          }\n        },\n        \"delete\": function _delete(e, el) {\n          if (_this.tribute.isActive && _this.tribute.current.mentionText.length < 1) {\n            _this.tribute.hideMenu();\n          } else if (_this.tribute.isActive) {\n            _this.tribute.showMenuFor(el);\n          }\n        }\n      };\n    }\n  }, {\n    key: \"setActiveLi\",\n    value: function setActiveLi(index) {\n      var lis = this.tribute.menu.querySelectorAll('li'),\n          length = lis.length >>> 0;\n      if (index) this.tribute.menuSelected = parseInt(index);\n\n      for (var i = 0; i < length; i++) {\n        var li = lis[i];\n\n        if (i === this.tribute.menuSelected) {\n          li.classList.add(this.tribute.current.collection.selectClass);\n          var liClientRect = li.getBoundingClientRect();\n          var menuClientRect = this.tribute.menu.getBoundingClientRect();\n\n          if (liClientRect.bottom > menuClientRect.bottom) {\n            var scrollDistance = liClientRect.bottom - menuClientRect.bottom;\n            this.tribute.menu.scrollTop += scrollDistance;\n          } else if (liClientRect.top < menuClientRect.top) {\n            var _scrollDistance = menuClientRect.top - liClientRect.top;\n\n            this.tribute.menu.scrollTop -= _scrollDistance;\n          }\n        } else {\n          li.classList.remove(this.tribute.current.collection.selectClass);\n        }\n      }\n    }\n  }, {\n    key: \"getFullHeight\",\n    value: function getFullHeight(elem, includeMargin) {\n      var height = elem.getBoundingClientRect().height;\n\n      if (includeMargin) {\n        var style = elem.currentStyle || window.getComputedStyle(elem);\n        return height + parseFloat(style.marginTop) + parseFloat(style.marginBottom);\n      }\n\n      return height;\n    }\n  }], [{\n    key: \"keys\",\n    value: function keys() {\n      return [{\n        key: 9,\n        value: 'TAB'\n      }, {\n        key: 8,\n        value: 'DELETE'\n      }, {\n        key: 13,\n        value: 'ENTER'\n      }, {\n        key: 27,\n        value: 'ESCAPE'\n      }, {\n        key: 32,\n        value: 'SPACE'\n      }, {\n        key: 38,\n        value: 'UP'\n      }, {\n        key: 40,\n        value: 'DOWN'\n      }];\n    }\n  }]);\n\n  return TributeEvents;\n}();\n\nvar _default = TributeEvents;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n\n},{}],3:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar TributeMenuEvents =\n/*#__PURE__*/\nfunction () {\n  function TributeMenuEvents(tribute) {\n    _classCallCheck(this, TributeMenuEvents);\n\n    this.tribute = tribute;\n    this.tribute.menuEvents = this;\n    this.menu = this.tribute.menu;\n  }\n\n  _createClass(TributeMenuEvents, [{\n    key: \"bind\",\n    value: function bind(menu) {\n      var _this = this;\n\n      this.menuClickEvent = this.tribute.events.click.bind(null, this);\n      this.menuContainerScrollEvent = this.debounce(function () {\n        if (_this.tribute.isActive) {\n          _this.tribute.showMenuFor(_this.tribute.current.element, false);\n        }\n      }, 300, false);\n      this.windowResizeEvent = this.debounce(function () {\n        if (_this.tribute.isActive) {\n          _this.tribute.range.positionMenuAtCaret(true);\n        }\n      }, 300, false); // fixes IE11 issues with mousedown\n\n      this.tribute.range.getDocument().addEventListener('MSPointerDown', this.menuClickEvent, false);\n      this.tribute.range.getDocument().addEventListener('mousedown', this.menuClickEvent, false);\n      window.addEventListener('resize', this.windowResizeEvent);\n\n      if (this.menuContainer) {\n        this.menuContainer.addEventListener('scroll', this.menuContainerScrollEvent, false);\n      } else {\n        window.addEventListener('scroll', this.menuContainerScrollEvent);\n      }\n    }\n  }, {\n    key: \"unbind\",\n    value: function unbind(menu) {\n      this.tribute.range.getDocument().removeEventListener('mousedown', this.menuClickEvent, false);\n      this.tribute.range.getDocument().removeEventListener('MSPointerDown', this.menuClickEvent, false);\n      window.removeEventListener('resize', this.windowResizeEvent);\n\n      if (this.menuContainer) {\n        this.menuContainer.removeEventListener('scroll', this.menuContainerScrollEvent, false);\n      } else {\n        window.removeEventListener('scroll', this.menuContainerScrollEvent);\n      }\n    }\n  }, {\n    key: \"debounce\",\n    value: function debounce(func, wait, immediate) {\n      var _this2 = this,\n          _arguments = arguments;\n\n      var timeout;\n      return function () {\n        var context = _this2,\n            args = _arguments;\n\n        var later = function later() {\n          timeout = null;\n          if (!immediate) func.apply(context, args);\n        };\n\n        var callNow = immediate && !timeout;\n        clearTimeout(timeout);\n        timeout = setTimeout(later, wait);\n        if (callNow) func.apply(context, args);\n      };\n    }\n  }]);\n\n  return TributeMenuEvents;\n}();\n\nvar _default = TributeMenuEvents;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n\n},{}],4:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// Thanks to https://github.com/jeff-collins/ment.io\nvar TributeRange =\n/*#__PURE__*/\nfunction () {\n  function TributeRange(tribute) {\n    _classCallCheck(this, TributeRange);\n\n    this.tribute = tribute;\n    this.tribute.range = this;\n  }\n\n  _createClass(TributeRange, [{\n    key: \"getDocument\",\n    value: function getDocument() {\n      var iframe;\n\n      if (this.tribute.current.collection) {\n        iframe = this.tribute.current.collection.iframe;\n      }\n\n      if (!iframe) {\n        return document;\n      }\n\n      return iframe.contentWindow.document;\n    }\n  }, {\n    key: \"positionMenuAtCaret\",\n    value: function positionMenuAtCaret(scrollTo) {\n      var _this = this;\n\n      var context = this.tribute.current,\n          coordinates;\n      var info = this.getTriggerInfo(false, this.tribute.hasTrailingSpace, true, this.tribute.allowSpaces, this.tribute.autocompleteMode);\n\n      if (typeof info !== 'undefined') {\n        if (!this.tribute.positionMenu) {\n          this.tribute.menu.style.cssText = \"display: block;\";\n          return;\n        }\n\n        if (!this.isContentEditable(context.element)) {\n          coordinates = this.getTextAreaOrInputUnderlinePosition(this.tribute.current.element, info.mentionPosition);\n        } else {\n          coordinates = this.getContentEditableCaretPosition(info.mentionPosition);\n        }\n\n        this.tribute.menu.style.cssText = \"top: \".concat(coordinates.top, \"px;\\n                                     left: \").concat(coordinates.left, \"px;\\n                                     right: \").concat(coordinates.right, \"px;\\n                                     bottom: \").concat(coordinates.bottom, \"px;\\n                                     position: absolute;\\n                                     display: block;\");\n\n        if (coordinates.left === 'auto') {\n          this.tribute.menu.style.left = 'auto';\n        }\n\n        if (coordinates.top === 'auto') {\n          this.tribute.menu.style.top = 'auto';\n        }\n\n        if (scrollTo) this.scrollIntoView();\n        window.setTimeout(function () {\n          var menuDimensions = {\n            width: _this.tribute.menu.offsetWidth,\n            height: _this.tribute.menu.offsetHeight\n          };\n\n          var menuIsOffScreen = _this.isMenuOffScreen(coordinates, menuDimensions);\n\n          var menuIsOffScreenHorizontally = window.innerWidth > menuDimensions.width && (menuIsOffScreen.left || menuIsOffScreen.right);\n          var menuIsOffScreenVertically = window.innerHeight > menuDimensions.height && (menuIsOffScreen.top || menuIsOffScreen.bottom);\n\n          if (menuIsOffScreenHorizontally || menuIsOffScreenVertically) {\n            _this.tribute.menu.style.cssText = 'display: none';\n\n            _this.positionMenuAtCaret(scrollTo);\n          }\n        }, 0);\n      } else {\n        this.tribute.menu.style.cssText = 'display: none';\n      }\n    }\n  }, {\n    key: \"selectElement\",\n    value: function selectElement(targetElement, path, offset) {\n      var range;\n      var elem = targetElement;\n\n      if (path) {\n        for (var i = 0; i < path.length; i++) {\n          elem = elem.childNodes[path[i]];\n\n          if (elem === undefined) {\n            return;\n          }\n\n          while (elem.length < offset) {\n            offset -= elem.length;\n            elem = elem.nextSibling;\n          }\n\n          if (elem.childNodes.length === 0 && !elem.length) {\n            elem = elem.previousSibling;\n          }\n        }\n      }\n\n      var sel = this.getWindowSelection();\n      range = this.getDocument().createRange();\n      range.setStart(elem, offset);\n      range.setEnd(elem, offset);\n      range.collapse(true);\n\n      try {\n        sel.removeAllRanges();\n      } catch (error) {}\n\n      sel.addRange(range);\n      targetElement.focus();\n    }\n  }, {\n    key: \"replaceTriggerText\",\n    value: function replaceTriggerText(text, requireLeadingSpace, hasTrailingSpace, originalEvent, item) {\n      var info = this.getTriggerInfo(true, hasTrailingSpace, requireLeadingSpace, this.tribute.allowSpaces, this.tribute.autocompleteMode);\n\n      if (info !== undefined) {\n        var context = this.tribute.current;\n        var replaceEvent = new CustomEvent('tribute-replaced', {\n          detail: {\n            item: item,\n            instance: context,\n            context: info,\n            event: originalEvent\n          }\n        });\n\n        if (!this.isContentEditable(context.element)) {\n          var myField = this.tribute.current.element;\n          var textSuffix = typeof this.tribute.replaceTextSuffix == 'string' ? this.tribute.replaceTextSuffix : ' ';\n          text += textSuffix;\n          var startPos = info.mentionPosition;\n          var endPos = info.mentionPosition + info.mentionText.length + textSuffix.length;\n          myField.value = myField.value.substring(0, startPos) + text + myField.value.substring(endPos, myField.value.length);\n          myField.selectionStart = startPos + text.length;\n          myField.selectionEnd = startPos + text.length;\n        } else {\n          // add a space to the end of the pasted text\n          var _textSuffix = typeof this.tribute.replaceTextSuffix == 'string' ? this.tribute.replaceTextSuffix : '\\xA0';\n\n          text += _textSuffix;\n          this.pasteHtml(text, info.mentionPosition, info.mentionPosition + info.mentionText.length + !this.tribute.autocompleteMode);\n        }\n\n        context.element.dispatchEvent(replaceEvent);\n      }\n    }\n  }, {\n    key: \"pasteHtml\",\n    value: function pasteHtml(html, startPos, endPos) {\n      var range, sel;\n      sel = this.getWindowSelection();\n      range = this.getDocument().createRange();\n      range.setStart(sel.anchorNode, startPos);\n      range.setEnd(sel.anchorNode, endPos);\n      range.deleteContents();\n      var el = this.getDocument().createElement('div');\n      el.innerHTML = html;\n      var frag = this.getDocument().createDocumentFragment(),\n          node,\n          lastNode;\n\n      while (node = el.firstChild) {\n        lastNode = frag.appendChild(node);\n      }\n\n      range.insertNode(frag); // Preserve the selection\n\n      if (lastNode) {\n        range = range.cloneRange();\n        range.setStartAfter(lastNode);\n        range.collapse(true);\n        sel.removeAllRanges();\n        sel.addRange(range);\n      }\n    }\n  }, {\n    key: \"getWindowSelection\",\n    value: function getWindowSelection() {\n      if (this.tribute.collection.iframe) {\n        return this.tribute.collection.iframe.contentWindow.getSelection();\n      }\n\n      return window.getSelection();\n    }\n  }, {\n    key: \"getNodePositionInParent\",\n    value: function getNodePositionInParent(element) {\n      if (element.parentNode === null) {\n        return 0;\n      }\n\n      for (var i = 0; i < element.parentNode.childNodes.length; i++) {\n        var node = element.parentNode.childNodes[i];\n\n        if (node === element) {\n          return i;\n        }\n      }\n    }\n  }, {\n    key: \"getContentEditableSelectedPath\",\n    value: function getContentEditableSelectedPath(ctx) {\n      var sel = this.getWindowSelection();\n      var selected = sel.anchorNode;\n      var path = [];\n      var offset;\n\n      if (selected != null) {\n        var i;\n        var ce = selected.contentEditable;\n\n        while (selected !== null && ce !== 'true') {\n          i = this.getNodePositionInParent(selected);\n          path.push(i);\n          selected = selected.parentNode;\n\n          if (selected !== null) {\n            ce = selected.contentEditable;\n          }\n        }\n\n        path.reverse(); // getRangeAt may not exist, need alternative\n\n        offset = sel.getRangeAt(0).startOffset;\n        return {\n          selected: selected,\n          path: path,\n          offset: offset\n        };\n      }\n    }\n  }, {\n    key: \"getTextPrecedingCurrentSelection\",\n    value: function getTextPrecedingCurrentSelection() {\n      var context = this.tribute.current,\n          text = '';\n\n      if (!this.isContentEditable(context.element)) {\n        var textComponent = this.tribute.current.element;\n\n        if (textComponent) {\n          var startPos = textComponent.selectionStart;\n\n          if (textComponent.value && startPos >= 0) {\n            text = textComponent.value.substring(0, startPos);\n          }\n        }\n      } else {\n        var selectedElem = this.getWindowSelection().anchorNode;\n\n        if (selectedElem != null) {\n          var workingNodeContent = selectedElem.textContent;\n          var selectStartOffset = this.getWindowSelection().getRangeAt(0).startOffset;\n\n          if (workingNodeContent && selectStartOffset >= 0) {\n            text = workingNodeContent.substring(0, selectStartOffset);\n          }\n        }\n      }\n\n      return text;\n    }\n  }, {\n    key: \"getLastWordInText\",\n    value: function getLastWordInText(text) {\n      text = text.replace(/\\u00A0/g, ' '); // https://stackoverflow.com/questions/29850407/how-do-i-replace-unicode-character-u00a0-with-a-space-in-javascript\n\n      var wordsArray = text.split(/\\s+/);\n      var worldsCount = wordsArray.length - 1;\n      return wordsArray[worldsCount].trim();\n    }\n  }, {\n    key: \"getTriggerInfo\",\n    value: function getTriggerInfo(menuAlreadyActive, hasTrailingSpace, requireLeadingSpace, allowSpaces, isAutocomplete) {\n      var _this2 = this;\n\n      var ctx = this.tribute.current;\n      var selected, path, offset;\n\n      if (!this.isContentEditable(ctx.element)) {\n        selected = this.tribute.current.element;\n      } else {\n        var selectionInfo = this.getContentEditableSelectedPath(ctx);\n\n        if (selectionInfo) {\n          selected = selectionInfo.selected;\n          path = selectionInfo.path;\n          offset = selectionInfo.offset;\n        }\n      }\n\n      var effectiveRange = this.getTextPrecedingCurrentSelection();\n      var lastWordOfEffectiveRange = this.getLastWordInText(effectiveRange);\n\n      if (isAutocomplete) {\n        return {\n          mentionPosition: effectiveRange.length - lastWordOfEffectiveRange.length,\n          mentionText: lastWordOfEffectiveRange,\n          mentionSelectedElement: selected,\n          mentionSelectedPath: path,\n          mentionSelectedOffset: offset\n        };\n      }\n\n      if (effectiveRange !== undefined && effectiveRange !== null) {\n        var mostRecentTriggerCharPos = -1;\n        var triggerChar;\n        this.tribute.collection.forEach(function (config) {\n          var c = config.trigger;\n          var idx = config.requireLeadingSpace ? _this2.lastIndexWithLeadingSpace(effectiveRange, c) : effectiveRange.lastIndexOf(c);\n\n          if (idx > mostRecentTriggerCharPos) {\n            mostRecentTriggerCharPos = idx;\n            triggerChar = c;\n            requireLeadingSpace = config.requireLeadingSpace;\n          }\n        });\n\n        if (mostRecentTriggerCharPos >= 0 && (mostRecentTriggerCharPos === 0 || !requireLeadingSpace || /[\\xA0\\s]/g.test(effectiveRange.substring(mostRecentTriggerCharPos - 1, mostRecentTriggerCharPos)))) {\n          var currentTriggerSnippet = effectiveRange.substring(mostRecentTriggerCharPos + 1, effectiveRange.length);\n          triggerChar = effectiveRange.substring(mostRecentTriggerCharPos, mostRecentTriggerCharPos + 1);\n          var firstSnippetChar = currentTriggerSnippet.substring(0, 1);\n          var leadingSpace = currentTriggerSnippet.length > 0 && (firstSnippetChar === ' ' || firstSnippetChar === '\\xA0');\n\n          if (hasTrailingSpace) {\n            currentTriggerSnippet = currentTriggerSnippet.trim();\n          }\n\n          var regex = allowSpaces ? /[^\\S ]/g : /[\\xA0\\s]/g;\n          this.tribute.hasTrailingSpace = regex.test(currentTriggerSnippet);\n\n          if (!leadingSpace && (menuAlreadyActive || !regex.test(currentTriggerSnippet))) {\n            return {\n              mentionPosition: mostRecentTriggerCharPos,\n              mentionText: currentTriggerSnippet,\n              mentionSelectedElement: selected,\n              mentionSelectedPath: path,\n              mentionSelectedOffset: offset,\n              mentionTriggerChar: triggerChar\n            };\n          }\n        }\n      }\n    }\n  }, {\n    key: \"lastIndexWithLeadingSpace\",\n    value: function lastIndexWithLeadingSpace(str, _char) {\n      var reversedStr = str.split('').reverse().join('');\n      var index = -1;\n\n      for (var cidx = 0, len = str.length; cidx < len; cidx++) {\n        var firstChar = cidx === str.length - 1;\n        var leadingSpace = /\\s/.test(reversedStr[cidx + 1]);\n        var match = _char === reversedStr[cidx];\n\n        if (match && (firstChar || leadingSpace)) {\n          index = str.length - 1 - cidx;\n          break;\n        }\n      }\n\n      return index;\n    }\n  }, {\n    key: \"isContentEditable\",\n    value: function isContentEditable(element) {\n      return element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA';\n    }\n  }, {\n    key: \"isMenuOffScreen\",\n    value: function isMenuOffScreen(coordinates, menuDimensions) {\n      var windowWidth = window.innerWidth;\n      var windowHeight = window.innerHeight;\n      var doc = document.documentElement;\n      var windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n      var windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n      var menuTop = typeof coordinates.top === 'number' ? coordinates.top : windowTop + windowHeight - coordinates.bottom - menuDimensions.height;\n      var menuRight = typeof coordinates.right === 'number' ? coordinates.right : coordinates.left + menuDimensions.width;\n      var menuBottom = typeof coordinates.bottom === 'number' ? coordinates.bottom : coordinates.top + menuDimensions.height;\n      var menuLeft = typeof coordinates.left === 'number' ? coordinates.left : windowLeft + windowWidth - coordinates.right - menuDimensions.width;\n      return {\n        top: menuTop < Math.floor(windowTop),\n        right: menuRight > Math.ceil(windowLeft + windowWidth),\n        bottom: menuBottom > Math.ceil(windowTop + windowHeight),\n        left: menuLeft < Math.floor(windowLeft)\n      };\n    }\n  }, {\n    key: \"getMenuDimensions\",\n    value: function getMenuDimensions() {\n      // Width of the menu depends of its contents and position\n      // We must check what its width would be without any obstruction\n      // This way, we can achieve good positioning for flipping the menu\n      var dimensions = {\n        width: null,\n        height: null\n      };\n      this.tribute.menu.style.cssText = \"top: 0px;\\n                                 left: 0px;\\n                                 position: fixed;\\n                                 display: block;\\n                                 visibility; hidden;\";\n      dimensions.width = this.tribute.menu.offsetWidth;\n      dimensions.height = this.tribute.menu.offsetHeight;\n      this.tribute.menu.style.cssText = \"display: none;\";\n      return dimensions;\n    }\n  }, {\n    key: \"getTextAreaOrInputUnderlinePosition\",\n    value: function getTextAreaOrInputUnderlinePosition(element, position, flipped) {\n      var properties = ['direction', 'boxSizing', 'width', 'height', 'overflowX', 'overflowY', 'borderTopWidth', 'borderRightWidth', 'borderBottomWidth', 'borderLeftWidth', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'fontStyle', 'fontVariant', 'fontWeight', 'fontStretch', 'fontSize', 'fontSizeAdjust', 'lineHeight', 'fontFamily', 'textAlign', 'textTransform', 'textIndent', 'textDecoration', 'letterSpacing', 'wordSpacing'];\n      var isFirefox = window.mozInnerScreenX !== null;\n      var div = this.getDocument().createElement('div');\n      div.id = 'input-textarea-caret-position-mirror-div';\n      this.getDocument().body.appendChild(div);\n      var style = div.style;\n      var computed = window.getComputedStyle ? getComputedStyle(element) : element.currentStyle;\n      style.whiteSpace = 'pre-wrap';\n\n      if (element.nodeName !== 'INPUT') {\n        style.wordWrap = 'break-word';\n      } // position off-screen\n\n\n      style.position = 'absolute';\n      style.visibility = 'hidden'; // transfer the element's properties to the div\n\n      properties.forEach(function (prop) {\n        style[prop] = computed[prop];\n      });\n\n      if (isFirefox) {\n        style.width = \"\".concat(parseInt(computed.width) - 2, \"px\");\n        if (element.scrollHeight > parseInt(computed.height)) style.overflowY = 'scroll';\n      } else {\n        style.overflow = 'hidden';\n      }\n\n      div.textContent = element.value.substring(0, position);\n\n      if (element.nodeName === 'INPUT') {\n        div.textContent = div.textContent.replace(/\\s/g, ' ');\n      }\n\n      var span = this.getDocument().createElement('span');\n      span.textContent = element.value.substring(position) || '.';\n      div.appendChild(span);\n      var rect = element.getBoundingClientRect();\n      var doc = document.documentElement;\n      var windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n      var windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n      var top = 0;\n      var left = 0;\n\n      if (this.menuContainerIsBody) {\n        top = rect.top;\n        left = rect.left;\n      }\n\n      var coordinates = {\n        top: top + windowTop + span.offsetTop + parseInt(computed.borderTopWidth) + parseInt(computed.fontSize) - element.scrollTop,\n        left: left + windowLeft + span.offsetLeft + parseInt(computed.borderLeftWidth)\n      };\n      var windowWidth = window.innerWidth;\n      var windowHeight = window.innerHeight;\n      var menuDimensions = this.getMenuDimensions();\n      var menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n      if (menuIsOffScreen.right) {\n        coordinates.right = windowWidth - coordinates.left;\n        coordinates.left = 'auto';\n      }\n\n      var parentHeight = this.tribute.menuContainer ? this.tribute.menuContainer.offsetHeight : this.getDocument().body.offsetHeight;\n\n      if (menuIsOffScreen.bottom) {\n        var parentRect = this.tribute.menuContainer ? this.tribute.menuContainer.getBoundingClientRect() : this.getDocument().body.getBoundingClientRect();\n        var scrollStillAvailable = parentHeight - (windowHeight - parentRect.top);\n        coordinates.bottom = scrollStillAvailable + (windowHeight - rect.top - span.offsetTop);\n        coordinates.top = 'auto';\n      }\n\n      menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n      if (menuIsOffScreen.left) {\n        coordinates.left = windowWidth > menuDimensions.width ? windowLeft + windowWidth - menuDimensions.width : windowLeft;\n        delete coordinates.right;\n      }\n\n      if (menuIsOffScreen.top) {\n        coordinates.top = windowHeight > menuDimensions.height ? windowTop + windowHeight - menuDimensions.height : windowTop;\n        delete coordinates.bottom;\n      }\n\n      this.getDocument().body.removeChild(div);\n      return coordinates;\n    }\n  }, {\n    key: \"getContentEditableCaretPosition\",\n    value: function getContentEditableCaretPosition(selectedNodePosition) {\n      var markerTextChar = '';\n      var markerEl,\n          markerId = \"sel_\".concat(new Date().getTime(), \"_\").concat(Math.random().toString().substr(2));\n      var range;\n      var sel = this.getWindowSelection();\n      var prevRange = sel.getRangeAt(0);\n      range = this.getDocument().createRange();\n      range.setStart(sel.anchorNode, selectedNodePosition);\n      range.setEnd(sel.anchorNode, selectedNodePosition);\n      range.collapse(false); // Create the marker element containing a single invisible character using DOM methods and insert it\n\n      markerEl = this.getDocument().createElement('span');\n      markerEl.id = markerId;\n      markerEl.appendChild(this.getDocument().createTextNode(markerTextChar));\n      range.insertNode(markerEl);\n      sel.removeAllRanges();\n      sel.addRange(prevRange);\n      var rect = markerEl.getBoundingClientRect();\n      var doc = document.documentElement;\n      var windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n      var windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n      var left = 0;\n      var top = 0;\n\n      if (this.menuContainerIsBody) {\n        left = rect.left;\n        top = rect.top;\n      } else {\n        left = markerEl.offsetLeft;\n        top = markerEl.offsetTop;\n      }\n\n      var coordinates = {\n        left: left + windowLeft,\n        top: top + markerEl.offsetHeight + windowTop\n      };\n      var windowWidth = window.innerWidth;\n      var windowHeight = window.innerHeight;\n      var menuDimensions = this.getMenuDimensions();\n      var menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n      if (menuIsOffScreen.right) {\n        coordinates.left = 'auto';\n        coordinates.right = windowWidth - rect.left - windowLeft;\n      }\n\n      var parentHeight = this.tribute.menuContainer ? this.tribute.menuContainer.offsetHeight : this.getDocument().body.offsetHeight;\n\n      if (menuIsOffScreen.bottom) {\n        var parentRect = this.tribute.menuContainer ? this.tribute.menuContainer.getBoundingClientRect() : this.getDocument().body.getBoundingClientRect();\n        var scrollStillAvailable = parentHeight - (windowHeight - parentRect.top);\n        coordinates.top = 'auto';\n        coordinates.bottom = scrollStillAvailable + (windowHeight - rect.top);\n      }\n\n      menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n      if (menuIsOffScreen.left) {\n        coordinates.left = windowWidth > menuDimensions.width ? windowLeft + windowWidth - menuDimensions.width : windowLeft;\n        delete coordinates.right;\n      }\n\n      if (menuIsOffScreen.top) {\n        coordinates.top = windowHeight > menuDimensions.height ? windowTop + windowHeight - menuDimensions.height : windowTop;\n        delete coordinates.bottom;\n      }\n\n      markerEl.parentNode.removeChild(markerEl);\n      return coordinates;\n    }\n  }, {\n    key: \"scrollIntoView\",\n    value: function scrollIntoView(elem) {\n      var reasonableBuffer = 20,\n          clientRect;\n      var maxScrollDisplacement = 100;\n      var e = this.menu;\n      if (typeof e === 'undefined') return;\n\n      while (clientRect === undefined || clientRect.height === 0) {\n        clientRect = e.getBoundingClientRect();\n\n        if (clientRect.height === 0) {\n          e = e.childNodes[0];\n\n          if (e === undefined || !e.getBoundingClientRect) {\n            return;\n          }\n        }\n      }\n\n      var elemTop = clientRect.top;\n      var elemBottom = elemTop + clientRect.height;\n\n      if (elemTop < 0) {\n        window.scrollTo(0, window.pageYOffset + clientRect.top - reasonableBuffer);\n      } else if (elemBottom > window.innerHeight) {\n        var maxY = window.pageYOffset + clientRect.top - reasonableBuffer;\n\n        if (maxY - window.pageYOffset > maxScrollDisplacement) {\n          maxY = window.pageYOffset + maxScrollDisplacement;\n        }\n\n        var targetY = window.pageYOffset - (window.innerHeight - elemBottom);\n\n        if (targetY > maxY) {\n          targetY = maxY;\n        }\n\n        window.scrollTo(0, targetY);\n      }\n    }\n  }, {\n    key: \"menuContainerIsBody\",\n    get: function get() {\n      return this.tribute.menuContainer === document.body || !this.tribute.menuContainer;\n    }\n  }]);\n\n  return TributeRange;\n}();\n\nvar _default = TributeRange;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n\n},{}],5:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// Thanks to https://github.com/mattyork/fuzzy\nvar TributeSearch =\n/*#__PURE__*/\nfunction () {\n  function TributeSearch(tribute) {\n    _classCallCheck(this, TributeSearch);\n\n    this.tribute = tribute;\n    this.tribute.search = this;\n  }\n\n  _createClass(TributeSearch, [{\n    key: \"simpleFilter\",\n    value: function simpleFilter(pattern, array) {\n      var _this = this;\n\n      return array.filter(function (string) {\n        return _this.test(pattern, string);\n      });\n    }\n  }, {\n    key: \"test\",\n    value: function test(pattern, string) {\n      return this.match(pattern, string) !== null;\n    }\n  }, {\n    key: \"match\",\n    value: function match(pattern, string, opts) {\n      opts = opts || {};\n      var patternIdx = 0,\n          result = [],\n          len = string.length,\n          totalScore = 0,\n          currScore = 0,\n          pre = opts.pre || '',\n          post = opts.post || '',\n          compareString = opts.caseSensitive && string || string.toLowerCase(),\n          ch,\n          compareChar;\n\n      if (opts.skip) {\n        return {\n          rendered: string,\n          score: 0\n        };\n      }\n\n      pattern = opts.caseSensitive && pattern || pattern.toLowerCase();\n      var patternCache = this.traverse(compareString, pattern, 0, 0, []);\n\n      if (!patternCache) {\n        return null;\n      }\n\n      return {\n        rendered: this.render(string, patternCache.cache, pre, post),\n        score: patternCache.score\n      };\n    }\n  }, {\n    key: \"traverse\",\n    value: function traverse(string, pattern, stringIndex, patternIndex, patternCache) {\n      // if the pattern search at end\n      if (pattern.length === patternIndex) {\n        // calculate score and copy the cache containing the indices where it's found\n        return {\n          score: this.calculateScore(patternCache),\n          cache: patternCache.slice()\n        };\n      } // if string at end or remaining pattern > remaining string\n\n\n      if (string.length === stringIndex || pattern.length - patternIndex > string.length - stringIndex) {\n        return undefined;\n      }\n\n      var c = pattern[patternIndex];\n      var index = string.indexOf(c, stringIndex);\n      var best, temp;\n\n      while (index > -1) {\n        patternCache.push(index);\n        temp = this.traverse(string, pattern, index + 1, patternIndex + 1, patternCache);\n        patternCache.pop(); // if downstream traversal failed, return best answer so far\n\n        if (!temp) {\n          return best;\n        }\n\n        if (!best || best.score < temp.score) {\n          best = temp;\n        }\n\n        index = string.indexOf(c, index + 1);\n      }\n\n      return best;\n    }\n  }, {\n    key: \"calculateScore\",\n    value: function calculateScore(patternCache) {\n      var score = 0;\n      var temp = 1;\n      patternCache.forEach(function (index, i) {\n        if (i > 0) {\n          if (patternCache[i - 1] + 1 === index) {\n            temp += temp + 1;\n          } else {\n            temp = 1;\n          }\n        }\n\n        score += temp;\n      });\n      return score;\n    }\n  }, {\n    key: \"render\",\n    value: function render(string, indices, pre, post) {\n      var rendered = string.substring(0, indices[0]);\n      indices.forEach(function (index, i) {\n        rendered += pre + string[index] + post + string.substring(index + 1, indices[i + 1] ? indices[i + 1] : string.length);\n      });\n      return rendered;\n    }\n  }, {\n    key: \"filter\",\n    value: function filter(pattern, arr, opts) {\n      var _this2 = this;\n\n      opts = opts || {};\n      return arr.reduce(function (prev, element, idx, arr) {\n        var str = element;\n\n        if (opts.extract) {\n          str = opts.extract(element);\n\n          if (!str) {\n            // take care of undefineds / nulls / etc.\n            str = '';\n          }\n        }\n\n        var rendered = _this2.match(pattern, str, opts);\n\n        if (rendered != null) {\n          prev[prev.length] = {\n            string: rendered.rendered,\n            score: rendered.score,\n            index: idx,\n            original: element\n          };\n        }\n\n        return prev;\n      }, []).sort(function (a, b) {\n        var compare = b.score - a.score;\n        if (compare) return compare;\n        return a.index - b.index;\n      });\n    }\n  }]);\n\n  return TributeSearch;\n}();\n\nvar _default = TributeSearch;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n\n},{}],6:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _Tribute = _interopRequireDefault(require(\"./Tribute\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/**\n* Tribute.js\n* Native ES6 JavaScript @mention Plugin\n**/\nvar _default = _Tribute[\"default\"];\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n\n},{\"./Tribute\":1}],7:[function(require,module,exports){\n\"use strict\";\n\nif (!Array.prototype.find) {\n  Array.prototype.find = function (predicate) {\n    if (this === null) {\n      throw new TypeError('Array.prototype.find called on null or undefined');\n    }\n\n    if (typeof predicate !== 'function') {\n      throw new TypeError('predicate must be a function');\n    }\n\n    var list = Object(this);\n    var length = list.length >>> 0;\n    var thisArg = arguments[1];\n    var value;\n\n    for (var i = 0; i < length; i++) {\n      value = list[i];\n\n      if (predicate.call(thisArg, value, i, list)) {\n        return value;\n      }\n    }\n\n    return undefined;\n  };\n}\n\nif (window && typeof window.CustomEvent !== \"function\") {\n  var CustomEvent = function CustomEvent(event, params) {\n    params = params || {\n      bubbles: false,\n      cancelable: false,\n      detail: undefined\n    };\n    var evt = document.createEvent('CustomEvent');\n    evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n    return evt;\n  };\n\n  if (typeof window.Event !== 'undefined') {\n    CustomEvent.prototype = window.Event.prototype;\n  }\n\n  window.CustomEvent = CustomEvent;\n}\n\n},{}]},{},[6])(6)\n});\n","/* eslint-disable require-jsdoc, no-console */\n\nimport areachart from \"src/decidim/vizzs/areachart\"\n\n$(() => {\n\n  const metricsData = {};\n  const metricsContainer = {};\n  const metricsParams = {};\n\n  const query = () => {\n    let metricsQuery = `metrics(names: ${metricsParams.names}, space_type: \"${metricsParams.spaceType}\", space_id: ${metricsParams.spaceId}) { name history { key value } }`;\n    return {query: `{ ${metricsQuery} }`};\n  }\n\n  const parameterize = (metrics) => {\n    metricsParams.names = JSON.stringify(metrics || []);\n    metricsParams.spaceType = $(\"#metrics #metrics-space_type\").val() || null;\n    metricsParams.spaceId = $(\"#metrics #metrics-space_id\").val() || null;\n  }\n\n  const fetch = (metrics) => $.post(window.Decidim.config.get(\"api_path\"), query(metrics));\n\n  const downloadMetricData = (event) => {\n    event.preventDefault();\n    let metricName = $(event.target).parents(\".metric-downloader\").data(\"metric\");\n    let csvContent = \"data:text/csv;charset=utf-8,\";\n\n    csvContent += \"key,value\\r\\n\";\n    metricsData[metricName].forEach((metricData)  => {\n      csvContent += `${metricData.key},${metricData.value}\\r\\n`;\n    });\n\n    // Required for FF\n    let link = document.createElement(\"a\");\n    link.setAttribute(\"href\", encodeURI(csvContent));\n    link.setAttribute(\"download\", `${metricName}_metric_data.csv`);\n    document.body.appendChild(link);\n    link.click();\n    document.body.removeChild(link);\n  }\n\n  $(\".metric-chart:visible\").each((_index, container) => {\n    metricsContainer[$(container).data(\"metric\")] = container;\n  });\n  $(\".metric-downloader\").each((_index, container) => {\n    container.onclick = downloadMetricData;\n  });\n\n  if (!$.isEmptyObject(metricsContainer)) {\n    parameterize(Object.keys(metricsContainer))\n    fetch().then((response) => {\n      if (response.data) {\n        $.each(response.data.metrics, (_index, metricData) => {\n          let container = metricsContainer[metricData.name];\n          if (metricData.history.length === 0) {\n            $(container).remove();\n            return;\n          }\n          let info = $(container).data(\"info\");\n          metricsData[metricData.name] = $.extend(true, [], metricData.history);\n          areachart({\n            container: `#${container.id}`,\n            data: metricData.history,\n            title: info.title,\n            objectName: info.object,\n            ...$(container).data()\n          });\n        });\n      } else if (response.errors) {\n        console.log(\"Something wrong happened when fetching metrics:\");\n        $.each(response.errors, (_index, error) => {\n          console.log(error.message);\n        });\n        $(\"#metrics\").remove();\n      }\n    }).fail((err) => {\n      console.log(`Something wrong happened when fetching metrics: ${err.statusText}`);\n      $(\"#metrics\").remove();\n    });\n  }\n});\n","/* eslint-disable require-jsdoc, id-length, no-undefined, no-unused-vars, multiline-ternary, no-ternary, no-nested-ternary, no-invalid-this */\n/* eslint prefer-reflect: [\"error\", { \"exceptions\": [\"call\"] }] */\n/* eslint dot-location: [\"error\", \"property\"] */\n/* eslint no-unused-vars: 0 */\n\nimport { select, mouse } from \"d3-selection\";\nimport { min, max, extent, ascending, bisector } from \"d3-array\";\nimport { scaleTime, scaleLinear } from \"d3-scale\";\nimport { axisLeft, axisBottom } from \"d3-axis\";\nimport { timeMonth } from \"d3-time\";\nimport { timeFormat, isoParse } from \"d3-time-format\";\nimport { area, line } from \"d3-shape\";\n\n// lib\nexport default function areachart(opts = {}) {\n\n  const parseData = (data) => {\n    // format the data\n    data.forEach((d) => {\n      d.key = isoParse(d.key)\n      d.value = Number(d.value)\n    });\n\n    // order by date\n    return data.sort((x, y) => ascending(x.key, y.key))\n  }\n\n  // OPTIONAL: Helper function to accumulates all data values\n  const aggregate = (agg) => agg.map((item, index, array) => {\n    if (index > 0) {\n      item.value += array[index - 1].value\n    }\n    return item\n  })\n\n  // parse opts\n  let data = parseData(opts.data)\n  let title = opts.title\n  let objectName = opts.objectName || \"\"\n  let container = select(opts.container)\n  let showAxis = opts.axis || false\n  let ratio = (opts.ratio || \"\").split(\":\").reduce((a, b) => a / b) || (4 / 3)\n  let showTooltip = Object.is(opts.tip, undefined) ? true : opts.tip\n  let cumulative = opts.agg || false\n\n  if (cumulative) {\n    data = aggregate(data)\n  }\n\n  // set the dimensions and margins of the graph\n  let margin = {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  }\n\n  let width = Number(container.node().getBoundingClientRect().width) - margin.left - margin.right\n  let height = (width / ratio) - margin.top - margin.bottom\n  let titlePadding = min([width / 10, 32])\n\n  // set the ranges\n  let x = scaleTime().range([0, width]);\n  let y = scaleLinear().range([height, 0]);\n\n  // define the area\n  let _area = area()\n    .x((d) => x(d.key))\n    .y0(height)\n    .y1((d) => y(d.value));\n\n  // define the line\n  let valueline = line()\n    .x((d) => x(d.key))\n    .y((d) => y(d.value));\n\n  let svg = container.append(\"svg\")\n    .attr(\"width\", width + margin.left + margin.right)\n    .attr(\"height\", height + margin.top + margin.bottom)\n    .append(\"g\")\n    .attr(\"transform\", `translate(${margin.left},${margin.top})`);\n\n  // scale the range of the data\n  x.domain(extent(data, (d) => d.key));\n  y.domain([0, max(data, (d) => d.value)]).nice();\n\n  // add the valueline path.\n  let topLine = svg.append(\"path\")\n    .data([data])\n    .attr(\"class\", \"line\")\n    .attr(\"d\", valueline)\n\n  // add the area\n  svg.append(\"path\")\n    .data([data])\n    .attr(\"class\", \"area\")\n    .attr(\"d\", _area)\n\n  if (showTooltip) {\n    // tooltip\n    let circle = svg.append(\"circle\")\n      .attr(\"class\", \"circle\")\n      .attr(\"r\", 6)\n      .style(\"display\", \"none\")\n\n    let tooltip = select(\"body\").append(\"div\")\n      .attr(\"id\", `${container.node().id}-tooltip`)\n      .attr(\"class\", \"chart-tooltip\")\n      .style(\"opacity\", 0)\n\n    svg\n      .on(\"mouseover\", () => {\n        circle.style(\"display\", null)\n        tooltip.style(\"opacity\", 1)\n      })\n      .on(\"mouseout\", () => {\n        circle.style(\"display\", \"none\")\n        tooltip.style(\"opacity\", 0)\n      })\n      .on(\"mousemove\", function() {\n        let x0 = x.invert(mouse(this)[0])\n        let i = bisector((d) => d.key).left(data, x0, 1)\n        let d0 = data[i - 1]\n        let d1 = data[i]\n        let d = (x0 - d0.key > d1.key - x0) ? d1 : d0\n\n        // svg position relative to document\n        let coords = {\n          x: window.pageXOffset + container.node().getBoundingClientRect().left,\n          y: window.pageYOffset + container.node().getBoundingClientRect().top\n        }\n\n        let tooltipContent = `\n          <div class=\"tooltip-content\">\n            ${timeFormat(\"%e %B %Y\")(d.key)}<br />\n            ${d.value.toLocaleString()} ${objectName}\n          </div>`\n\n        circle.attr(\"transform\", `translate(${x(d.key)},${y(d.value)})`)\n        tooltip.html(tooltipContent)\n          .style(\"left\", `${coords.x + x(d.key)}px`)\n          .style(\"top\", `${coords.y + y(d.value)}px`)\n      })\n  }\n\n  if (showAxis) {\n    let xAxis = axisBottom(x)\n      .ticks(timeMonth)\n      .tickFormat(timeFormat(\"%b %y\"))\n      .tickSize(-height)\n    let yAxis = axisLeft(y)\n      .ticks(5)\n      .tickSize(8)\n\n    let _xAxis = (g) => {\n      g.call(xAxis)\n      g.select(\".domain\").remove()\n      g.selectAll(\".tick line\").attr(\"class\", \"dashed\")\n      g.selectAll(\".tick text\").attr(\"y\", 6)\n    }\n    let _yAxis = (g) => {\n      g.call(yAxis)\n      g.select(\".domain\").remove()\n      g.select(\".tick:first-of-type\").remove()\n      g.selectAll(\".tick text\").attr(\"text-anchor\", \"start\").attr(\"x\", 6)\n    }\n\n    // custom X-Axis\n    svg.append(\"g\")\n      .attr(\"transform\", `translate(0,${height})`)\n      .call(_xAxis);\n\n    // custom Y-Axis\n    svg.append(\"g\")\n      .call(_yAxis)\n\n    // last circle (current value)\n    let g = svg.append(\"g\")\n      .data([data])\n      .attr(\"transform\", (d) => `translate(${x(d[d.length - 1].key)},${y(d[d.length - 1].value)})`)\n\n    g.append(\"circle\")\n      .attr(\"class\", \"circle\")\n      .attr(\"r\", 8)\n\n    g.append(\"text\")\n      .attr(\"class\", \"sum\")\n      .attr(\"text-anchor\", \"end\")\n      .attr(\"dx\", -8 * 2)\n      .text((d) => d[d.length - 1].value.toLocaleString())\n\n  } else {\n    // add the title group\n    let g = svg.append(\"g\")\n      .attr(\"text-anchor\", \"start\")\n      .attr(\"transform\", `translate(${titlePadding},${titlePadding})`)\n\n    let titleLines = 0\n\n    if (title.length) {\n      g.append(\"text\")\n        .attr(\"x\", 0)\n        .attr(\"y\", 0)\n        .attr(\"class\", \"title\")\n        .text(title)\n        .call(function(fulltext, wrapwidth, start = 0) {\n          fulltext.each(function() {\n            let text = select(this)\n            let word = \"\"\n            let words = text.text().split(/\\s+/).reverse()\n            let _line = []\n            let lineNumber = 0\n            let lineHeight = 1.1\n            let _x = text.attr(\"x\")\n            let _y = text.attr(\"y\")\n            let dy = 0\n            let tspan = text.text(null)\n              .append(\"tspan\")\n              .attr(\"x\", _x)\n              .attr(\"y\", _y)\n              .attr(\"dy\", `${dy}em`)\n\n            /* eslint-disable no-cond-assign, no-plusplus */\n            while (word = words.pop()) {\n              _line.push(word);\n              tspan.text(_line.join(\" \"));\n              if (tspan.node().getComputedTextLength() > wrapwidth) {\n                _line.pop()\n                tspan.text(_line.join(\" \"))\n                _line = [word]\n                tspan = text.append(\"tspan\")\n                  .attr(\"x\", _x)\n                  .attr(\"y\", _y)\n                  .attr(\"dy\", `${(++lineNumber * lineHeight) + dy}em`)\n                  .text(word);\n              }\n            }\n\n            titleLines = lineNumber * lineHeight\n          });\n        }, width - (titlePadding * 2))\n    }\n\n    let fontSize = parseFloat(getComputedStyle(g.node()).fontSize);\n\n    g.append(\"text\")\n      .attr(\"x\", 0)\n      .attr(\"dy\", title.length ? (titlePadding * 2) + (titleLines * fontSize) : (titlePadding * 1.25))\n      .attr(\"class\", \"sum\")\n      .text(data[data.length - 1].value.toLocaleString())\n  }\n}\n"],"names":["$","document","on","event","preventDefault","link","currentTarget","$modal","concat","dataset","open","html","ajax","type","url","openUrl","success","$html","foundation","error","request","status","_error","_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","_defineProperties","target","props","descriptor","_toPropertyKey","toPrimitive","String","Number","_toPrimitive","AutoComplete","Constructor","el","_this","options","arguments","undefined","instance","_classCallCheck","this","element","stickySelectedSpan","clearStickySelectionSpan","stickyHiddenInput","promptDiv","fn","_src","thresholdTemp","threshold","assign","placeholder","mode","searchPrompt","searchPromptText","selected","maxResults","dataMatchKeys","dataSource","dataFilter","delay","modifyResult","autocomplete","AutoCompleteJS","selector","diacritics","placeHolder","debounce","data","src","_callee","query","fetchResults","_context","t0","self","args","apply","err","_x","filter","list","results","item","idx","arr","findIndex","val","resultsList","resultItem","events","input","blur","style","display","acWrapper","closest","ac","stopPropagation","addEventListener","createPromptDiv","createStickySelect","createMultiSelect","protoProps","setInput","detail","selection","handleStickyEvents","handleMultiEvents","addMultiSelectItem","addStickySelectItem","removeStickySelection","includes","test","hiddenInput","createElement","prepend","innerHTML","_this2","chosen","classList","add","clearSelection","setAttribute","evt","querySelector","remove","parentElement","appendChild","multiSelectWrapper","inputContainer","insertBefore","createHiddenInput","_this3","focus","className","_this4","staticProps","updateLabel","$el","$input","label","to","clearTimeout","setTimeout","removeData","ev","selectedText","is","select","text","getSelectedText","copySuccess","$temp","css","width","height","after","copyDone","execCommand","performCopy","message","announcementMessage","$msg","announceToScreenReader","DataPicker","pickers","modal","_createModalContainer","appendTo","current","each","_index","picker","activate","$picker","_setCurrentPicker","multiple","_index2","div","hasClass","isMultiPicker","_targetFromEvent","_openPicker","tagName","_removeValue","parentNode","autosort","_sort","toggleClass","attr","map","$link","get","savedData","_choose","interactive","modify","_load","$target","find","resp","modalContent","_handleLinks","_handleCheckboxes","content","_this5","click","chooseUrl","_this6","checkbox","$checkbox","checked","_targetFromValue","change","close","opts","dataText","_escape","choosenOption","trigger","_removeErrors","_close","children","sort","item1","item2","detach","_this7","fadeoutTime","navigator","webdriver","fadeOut","_this7$current$target","parent","removeClass","str","replace","_char","charCodeAt","formDatePicker","node","language","initialDate","pickTime","languageProps","fdatepicker","dates","format","disableDblClickSelection","leftArrow","rightArrow","delayed","context","func","wait","timeout","_len","Array","_key","Reflect","CheckBoxesTree","checkboxesTree","querySelectorAll","globalChecks","global","checkGlobalCheck","checkTheCheckBoxes","checkTheCheckParent","checkboxes","index","theForm","elem","disabled","targetChecks","checkStatus","indeterminate","checksContext","totalInputs","checkedInputs","indeterminateInputs","from","subfilters","nextElementSibling","contains","checkBoxContext","parents","parentCheck","totalCheckSiblings","checkedSiblings","indeterminateSiblings","sibling","FormFilterComponent","$form","id","_getUID","mounted","changeEvents","theCheckBoxesTree","theDataPicker","window","_updateInitialState","_onFormChange","bind","_onFormSubmit","_onPopState","Decidim","PopStateHandler","popStateSubmiter","off","unregisterCallback","queue","contentContainer","currentFormRequest","abort","originalEvent","addClass","setContainerForm","registerCallback","currentState","_this$_currentStateAn2","_slicedToArray","_currentStateAndPath","initialPath","initialState","_path","replaceState","withHost","state","path","location","pathname","search","hash","origin","regexpResult","decodeURIComponent","_getLocation","match","reduce","acc","result","_result$match2","array","order","clear","_clearForm","filterParams","_parseLocationFilterValues","currentOrder","_parseLocationOrderValue","fieldName","isArray","updateChecked","pickerState","load","Rails","fire","eventDetail","_this$_currentStateAn6","newPath","newState","pushState","_saveFilters","formAction","params","serialize","indexOf","save","Date","getUTCMilliseconds","Math","floor","random","pathWithQueryStrings","sessionStorage","pathName","setItem","JSON","stringify","jQuery","lb","days","daysShort","daysMin","months","monthsShort","today","$hashtagContainer","nodatafound","noMatchTemplate","cursor","__quill","getText","tribute","Tribute","cb","post","config","response","hashtags","fail","always","$parent","removeAttr","remoteSearch","positionMenu","menuContainer","fillAttr","lookup","selectTemplate","range","isContentEditable","quill","insertText","original","Quill","sources","API","position","getLength","setSelection","menuItemTemplate","$qlEditor","attach","isActive","$mentionContainer","callback","users","allowSpaces","menuItemLimit","selectClass","nickname","svg","__typename","iconsPath","membersCount","avatarUrl","setupEvents","$element","menu","body","getDocument","sessionTimeOutEnabled","$timeoutModal","timeoutInSeconds","parseInt","secondsUntilTimeoutPath","heartbeatPath","interval","preventTimeOutSeconds","endsAt","dayjs","lastAction","$continueSessionButton","lastActivityCheck","preventTimeOutUntil","setTimer","secondsUntilExpiration","heartbeat","contentType","exitInterval","setInterval","seconds","timeSinceLastActivityCheckInSeconds","round","headers","secondsUntilSessionExpires","seconds_remaining","mousemove","scroll","keypress","ajaxComplete","_event","_xhr","settings","clearInterval","enableSessionTimeout","disableSessionTimeout","UTCDate","UTC","Datepicker","that","autoShow","closeButton","split","isRTL","rtl","DPGlobal","parseFormat","formatText","isInline","isInput","component","hasInput","onRender","linkField","linkFormat","minuteStep","pickerPosition","faCSSprefix","closeIcon","minView","convertViewMode","maxView","modes","startViewMode","startView","viewMode","forceParse","template","proxy","mousedown","show","hide","siblings","append","autoclose","keyboardNavigation","todayBtn","todayHighlight","calendarWeeks","weekStart","weekEnd","startDate","Infinity","endDate","daysOfWeekDisabled","datesDisabled","setStartDate","setEndDate","setDaysOfWeekDisabled","setDatesDisabled","date","viewDate","parseDate","setValue","fillDow","fillMonths","update","showMode","_attachEvents","_events","_detachEvents","keyup","keydown","dblclick","outerHeight","place","datepicker","getDate","getUTCDate","getTime","getTimezoneOffset","setDate","setUTCDate","formatted","getFormattedDate","formatDate","updateNavArrows","valueOf","zIndexes","zIndex","b","textbox","offset","outerWidth","fullOffsetTop","top","offsetLeft","left","canShowTop","scrollTop","canShowBottom","fromArgs","currentVal","fill","dowCnt","cell","year","getUTCFullYear","month","getUTCMonth","dayMonth","hours","getUTCHours","minutes","getUTCMinutes","startYear","startMonth","endYear","endMonth","currentDate","titleFormat","en","toggle","prevMonth","day","getDaysInMonth","getUTCDay","nextMonth","clsName","getDay","getFullYear","calWeek","getMonth","inArray","empty","join","actual","currentYear","end","eq","yearCont","hour","visibility","nodeName","toLowerCase","dir","navStep","moveHour","moveDate","moveMonth","moveYear","getHours","getMinutes","getSeconds","_setDate","getUTCSeconds","setUTCMonth","setUTCFullYear","substr","oldViewMode","which","new_date","setUTCHours","new_month","mag","abs","dateWithinRange","keyCode","newDate","newViewDate","dateChanged","ctrlKey","shiftKey","newViewMode","max","min","changeViewDate","option","shift","_data","$this","extend","defaults","_toConsumableArray","navFnc","isLeapYear","validParts","nonpunctuation","separators","parts","part_re","part","exec","Datetimepicker","filtered","parsed","setters_order","setters_map","hh","ii","setUTCMinutes","ss","setUTCSeconds","yyyy","yy","m","_d","M","MM","mm","dd","cnt","toString","substring","seps","headTemplate","contTemplate","footTemplate","code","exports","require","module","_TributeEvents","_interopRequireDefault","_TributeMenuEvents","_TributeRange","_TributeSearch","obj","__esModule","_arrayWithHoles","_arr","_n","_e","_s","_i","_iterableToArrayLimit","_nonIterableRest","_default","_ref","_ref$values","_ref$iframe","iframe","_ref$selectClass","_ref$trigger","_ref$autocompleteMode","autocompleteMode","_ref$selectTemplate","_ref$menuItemTemplate","_ref$lookup","_ref$fillAttr","_ref$collection","collection","_ref$menuContainer","_ref$noMatchTemplate","_ref$requireLeadingSp","requireLeadingSpace","_ref$allowSpaces","_ref$replaceTextSuffi","replaceTextSuffix","_ref$positionMenu","_ref$spaceSelectsMatc","spaceSelectsMatch","_ref$searchOpts","searchOpts","_ref$menuItemLimit","menuSelected","inputEvent","hasTrailingSpace","defaultSelectTemplate","defaultMenuItemTemplate","console","warn","matchItem","string","NodeList","HTMLCollection","_attach","hasAttribute","ensureEditable","inputTypes","contentEditable","wrapper","ul","scrollTo","mentionText","currentMentionTextSnapshot","createMenu","tributeMenu","menuEvents","processValues","items","pre","skip","extract","filteredItems","positionMenuAtCaret","noMatchEvent","CustomEvent","dispatchEvent","hideMenu","fragment","createDocumentFragment","li","_this2$_findLiTarget2","_findLiTarget","movementY","setActiveLi","getAttribute","collectionIndex","activeElement","placeCaretAtEnd","externalTrigger","insertTextAtCursor","insertAtCaret","showMenuFor","getSelection","createRange","selectNodeContents","collapse","sel","removeAllRanges","addRange","createTextRange","textRange","moveToElementText","getRangeAt","deleteContents","textNode","createTextNode","insertNode","textarea","scrollPos","caretPos","selectionStart","front","back","selectionEnd","cssText","replaceText","replaceTriggerText","newValues","_append","_detach","unbind","removeAttribute","TributeEvents","boundKeydown","boundKeyup","boundInput","removeEventListener","shouldDeactivate","commandEvent","callbacks","getElementsByClassName","selectItemAtIndex","updateSelection","triggerChar","getKeyCode","triggers","eventKeyPressed","getTriggerInfo","mentionTriggerChar","selectedPath","mentionSelectedPath","selectedOffset","mentionSelectedOffset","collectionItem","enter","escape","tab","space","up","count","scrollHeight","down","lis","liClientRect","getBoundingClientRect","menuClientRect","bottom","scrollDistance","_scrollDistance","includeMargin","currentStyle","getComputedStyle","parseFloat","marginTop","marginBottom","TributeMenuEvents","menuClickEvent","menuContainerScrollEvent","windowResizeEvent","immediate","_arguments","callNow","TributeRange","contentWindow","coordinates","getContentEditableCaretPosition","mentionPosition","getTextAreaOrInputUnderlinePosition","right","scrollIntoView","menuDimensions","offsetWidth","offsetHeight","menuIsOffScreen","isMenuOffScreen","menuIsOffScreenHorizontally","innerWidth","menuIsOffScreenVertically","innerHeight","targetElement","childNodes","nextSibling","previousSibling","getWindowSelection","setStart","setEnd","replaceEvent","pasteHtml","myField","textSuffix","startPos","endPos","anchorNode","lastNode","frag","firstChild","cloneRange","setStartAfter","ctx","ce","getNodePositionInParent","startOffset","selectedElem","workingNodeContent","textContent","selectStartOffset","textComponent","wordsArray","trim","menuAlreadyActive","isAutocomplete","selectionInfo","getContentEditableSelectedPath","effectiveRange","getTextPrecedingCurrentSelection","lastWordOfEffectiveRange","getLastWordInText","mentionSelectedElement","mostRecentTriggerCharPos","lastIndexWithLeadingSpace","lastIndexOf","currentTriggerSnippet","firstSnippetChar","leadingSpace","regex","reversedStr","cidx","len","firstChar","windowWidth","windowHeight","doc","documentElement","windowLeft","pageXOffset","scrollLeft","clientLeft","windowTop","pageYOffset","clientTop","menuTop","menuRight","menuBottom","menuLeft","ceil","dimensions","flipped","isFirefox","mozInnerScreenX","computed","whiteSpace","wordWrap","prop","overflowY","overflow","span","rect","menuContainerIsBody","offsetTop","borderTopWidth","fontSize","borderLeftWidth","getMenuDimensions","parentHeight","scrollStillAvailable","removeChild","selectedNodePosition","markerEl","markerId","prevRange","clientRect","elemTop","elemBottom","maxY","targetY","TributeSearch","pattern","compareString","caseSensitive","rendered","score","patternCache","traverse","render","cache","stringIndex","patternIndex","calculateScore","best","temp","indices","compare","predicate","thisArg","bubbles","cancelable","createEvent","initCustomEvent","Event","metricsQuery","metrics","metricsData","metricsContainer","metricsParams","downloadMetricData","metricName","csvContent","metricData","encodeURI","container","onclick","isEmptyObject","names","spaceType","spaceId","history","isoParse","x","ascending","parseData","title","objectName","showAxis","axis","ratio","showTooltip","tip","agg","margin","titlePadding","scaleTime","scaleLinear","_area","area","y0","y1","valueline","line","domain","extent","nice","circle","tooltip","x0","invert","mouse","bisector","d0","d1","coords","tooltipContent","timeFormat","toLocaleString","xAxis","axisBottom","ticks","timeMonth","tickFormat","tickSize","yAxis","axisLeft","selectAll","_g","titleLines","fulltext","wrapwidth","word","words","_line","lineNumber","_y","tspan","getComputedTextLength","areachart","_objectSpread","object","errors","log","statusText"],"sourceRoot":""}