{"version":3,"file":"js/1144-cb96565228de85387768.js","mappings":"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","sources":["webpack://app/../usr/local/bundle/gems/decidim-core-0.27.4/app/packs/src/decidim/ajax_modals.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.4/app/packs/src/decidim/data_picker.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.4/app/packs/src/decidim/form_datepicker.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.4/app/packs/src/decidim/delayed.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.4/app/packs/src/decidim/check_boxes_tree.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.4/app/packs/src/decidim/form_filter.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.4/app/packs/src/decidim/foundation-datepicker/js/locales/foundation-datepicker.lb.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.4/app/packs/src/decidim/gallery.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.4/app/packs/src/decidim/input_hashtags.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.4/app/packs/src/decidim/input_mentions.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.4/app/packs/src/decidim/session_timeouter.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.4/app/packs/src/decidim/vendor/foundation-datepicker.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.4/app/packs/src/decidim/vendor/tribute.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.4/app/packs/src/decidim/vizzs/index.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.4/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","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.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(\"/api\", {query: `{hashtags(name:\"${text}\") {name}}`}).\n\n      then((response) => {\n        let data = response.data.hashtags || {};\n        cb(data)\n      }).fail(function() {\n        cb([])\n      }).always(() => {\n      // This function runs Tribute every single time you type something\n      // So we must evalute DOM properties after each\n        const $parent = $(tribute.current.element).parent()\n        $parent.addClass(\"is-active\")\n\n        // We need to move the container to the wrapper selected\n        const $tribute = $parent.find(\".tribute-container\");\n        // Remove the inline styles, relative to absolute positioning\n        $tribute.removeAttr(\"style\");\n      })\n  };\n\n  // tribute.js docs - http://github.com/zurb/tribute\n  /* global Tribute*/\n  let tribute = new Tribute({\n    trigger: \"#\",\n    values: function (text, cb) {\n      remoteSearch(text, (hashtags) => cb(hashtags));\n    },\n    positionMenu: true,\n    menuContainer: null,\n    fillAttr: \"name\",\n    noMatchTemplate: noMatchTemplate,\n    lookup: (item) => item.name,\n    selectTemplate: function(item) {\n      if (typeof item === \"undefined\") {\n        return null;\n      }\n      if (this.range.isContentEditable(this.current.element)) {\n        // Check quill.js\n        if ($(this.current.element).hasClass(\"ql-editor\")) {\n          let editorContainer = $(this.current.element).parent().get(0);\n          let quill = editorContainer.__quill;\n          quill.insertText(cursor - 1, `#${item.original.name} `, Quill.sources.API);\n          // cursor position + hashtag length + \"#\" sign + space\n          let position = cursor + item.original.name.length + 2;\n\n          let next = 0;\n          if (quill.getLength() > position) {\n            next = position\n          } else {\n            next = quill.getLength() - 1\n          }\n          // Workaround https://github.com/quilljs/quill/issues/731\n          setTimeout(function () {\n            quill.setSelection(next, 0);\n          }, 500);\n\n          return \"\"\n        }\n        return `<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(\"/api\", {query: query}).\n      then((response) => {\n        let data = response.data.users || {};\n        cb(data)\n      }).fail(function() {\n        cb([])\n      }).always(() => {\n      // This function runs Tribute every single time you type something\n      // So we must evalute DOM properties after each\n        const $parent = $(tribute.current.element).parent();\n        $parent.addClass(\"is-active\");\n\n        // We need to move the container to the wrapper selected\n        const $tribute = $parent.find(\".tribute-container\");\n        // Remove the inline styles, relative to absolute positioning\n        $tribute.removeAttr(\"style\");\n      })\n  };\n\n  // tribute.js docs - http://github.com/zurb/tribute\n  /* global Tribute*/\n  let tribute = new Tribute({\n    trigger: \"@\",\n    // avoid overloading the API if the user types too fast\n    values: debounce(function (text, cb) {\n      remoteSearch(text, (users) => cb(users));\n    }, 250),\n    positionMenu: true,\n    menuContainer: null,\n    allowSpaces: true,\n    menuItemLimit: 5,\n    fillAttr: \"nickname\",\n    selectClass: \"highlight\",\n    noMatchTemplate: noMatchTemplate,\n    lookup: (item) => item.nickname + item.name,\n    selectTemplate: function(item) {\n      if (typeof item === \"undefined\") {\n        return null;\n      }\n      if (this.range.isContentEditable(this.current.element)) {\n        // Check quill.js\n        if ($(this.current.element).hasClass(\"ql-editor\")) {\n          let editorContainer = $(this.current.element).parent().get(0);\n          let quill = editorContainer.__quill;\n          quill.insertText(cursor - 1, `${item.original.nickname} `, Quill.sources.API);\n          // cursor position + nickname length + \"@\" sign + space\n          let position = cursor + item.original.nickname.length + 2\n\n          let next = 0;\n          if (quill.getLength() > position) {\n            next = position\n          } else {\n            next = quill.getLength() - 1\n          }\n          // Workaround https://github.com/quilljs/quill/issues/731\n          setTimeout(function () {\n            quill.setSelection(next, 0);\n          }, 500);\n\n          return \"\"\n        }\n        return `<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(\"/api\", query(metrics));\n\n  const downloadMetricData = (event) => {\n    event.preventDefault();\n    let metricName = $(event.target).parents(\".metric-downloader\").data(\"metric\");\n    let csvContent = \"data:text/csv;charset=utf-8,\";\n\n    csvContent += \"key,value\\r\\n\";\n    metricsData[metricName].forEach((metricData)  => {\n      csvContent += `${metricData.key},${metricData.value}\\r\\n`;\n    });\n\n    // Required for FF\n    let link = document.createElement(\"a\");\n    link.setAttribute(\"href\", encodeURI(csvContent));\n    link.setAttribute(\"download\", `${metricName}_metric_data.csv`);\n    document.body.appendChild(link);\n    link.click();\n    document.body.removeChild(link);\n  }\n\n  $(\".metric-chart:visible\").each((_index, container) => {\n    metricsContainer[$(container).data(\"metric\")] = container;\n  });\n  $(\".metric-downloader\").each((_index, container) => {\n    container.onclick = downloadMetricData;\n  });\n\n  if (!$.isEmptyObject(metricsContainer)) {\n    parameterize(Object.keys(metricsContainer))\n    fetch().then((response) => {\n      if (response.data) {\n        $.each(response.data.metrics, (_index, metricData) => {\n          let container = metricsContainer[metricData.name];\n          if (metricData.history.length === 0) {\n            $(container).remove();\n            return;\n          }\n          let info = $(container).data(\"info\");\n          metricsData[metricData.name] = $.extend(true, [], metricData.history);\n          areachart({\n            container: `#${container.id}`,\n            data: metricData.history,\n            title: info.title,\n            objectName: info.object,\n            ...$(container).data()\n          });\n        });\n      } else if (response.errors) {\n        console.log(\"Something wrong happened when fetching metrics:\");\n        $.each(response.errors, (_index, error) => {\n          console.log(error.message);\n        });\n        $(\"#metrics\").remove();\n      }\n    }).fail((err) => {\n      console.log(`Something wrong happened when fetching metrics: ${err.statusText}`);\n      $(\"#metrics\").remove();\n    });\n  }\n});\n","/* eslint-disable require-jsdoc, id-length, no-undefined, no-unused-vars, multiline-ternary, no-ternary, no-nested-ternary, no-invalid-this */\n/* eslint prefer-reflect: [\"error\", { \"exceptions\": [\"call\"] }] */\n/* eslint dot-location: [\"error\", \"property\"] */\n/* eslint no-unused-vars: 0 */\n\nimport { select, mouse } from \"d3-selection\";\nimport { min, max, extent, ascending, bisector } from \"d3-array\";\nimport { scaleTime, scaleLinear } from \"d3-scale\";\nimport { axisLeft, axisBottom } from \"d3-axis\";\nimport { timeMonth } from \"d3-time\";\nimport { timeFormat, isoParse } from \"d3-time-format\";\nimport { area, line } from \"d3-shape\";\n\n// lib\nexport default function areachart(opts = {}) {\n\n  const parseData = (data) => {\n    // format the data\n    data.forEach((d) => {\n      d.key = isoParse(d.key)\n      d.value = Number(d.value)\n    });\n\n    // order by date\n    return data.sort((x, y) => ascending(x.key, y.key))\n  }\n\n  // OPTIONAL: Helper function to accumulates all data values\n  const aggregate = (agg) => agg.map((item, index, array) => {\n    if (index > 0) {\n      item.value += array[index - 1].value\n    }\n    return item\n  })\n\n  // parse opts\n  let data = parseData(opts.data)\n  let title = opts.title\n  let objectName = opts.objectName || \"\"\n  let container = select(opts.container)\n  let showAxis = opts.axis || false\n  let ratio = (opts.ratio || \"\").split(\":\").reduce((a, b) => a / b) || (4 / 3)\n  let showTooltip = Object.is(opts.tip, undefined) ? true : opts.tip\n  let cumulative = opts.agg || false\n\n  if (cumulative) {\n    data = aggregate(data)\n  }\n\n  // set the dimensions and margins of the graph\n  let margin = {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  }\n\n  let width = Number(container.node().getBoundingClientRect().width) - margin.left - margin.right\n  let height = (width / ratio) - margin.top - margin.bottom\n  let titlePadding = min([width / 10, 32])\n\n  // set the ranges\n  let x = scaleTime().range([0, width]);\n  let y = scaleLinear().range([height, 0]);\n\n  // define the area\n  let _area = area()\n    .x((d) => x(d.key))\n    .y0(height)\n    .y1((d) => y(d.value));\n\n  // define the line\n  let valueline = line()\n    .x((d) => x(d.key))\n    .y((d) => y(d.value));\n\n  let svg = container.append(\"svg\")\n    .attr(\"width\", width + margin.left + margin.right)\n    .attr(\"height\", height + margin.top + margin.bottom)\n    .append(\"g\")\n    .attr(\"transform\", `translate(${margin.left},${margin.top})`);\n\n  // scale the range of the data\n  x.domain(extent(data, (d) => d.key));\n  y.domain([0, max(data, (d) => d.value)]).nice();\n\n  // add the valueline path.\n  let topLine = svg.append(\"path\")\n    .data([data])\n    .attr(\"class\", \"line\")\n    .attr(\"d\", valueline)\n\n  // add the area\n  svg.append(\"path\")\n    .data([data])\n    .attr(\"class\", \"area\")\n    .attr(\"d\", _area)\n\n  if (showTooltip) {\n    // tooltip\n    let circle = svg.append(\"circle\")\n      .attr(\"class\", \"circle\")\n      .attr(\"r\", 6)\n      .style(\"display\", \"none\")\n\n    let tooltip = select(\"body\").append(\"div\")\n      .attr(\"id\", `${container.node().id}-tooltip`)\n      .attr(\"class\", \"chart-tooltip\")\n      .style(\"opacity\", 0)\n\n    svg\n      .on(\"mouseover\", () => {\n        circle.style(\"display\", null)\n        tooltip.style(\"opacity\", 1)\n      })\n      .on(\"mouseout\", () => {\n        circle.style(\"display\", \"none\")\n        tooltip.style(\"opacity\", 0)\n      })\n      .on(\"mousemove\", function() {\n        let x0 = x.invert(mouse(this)[0])\n        let i = bisector((d) => d.key).left(data, x0, 1)\n        let d0 = data[i - 1]\n        let d1 = data[i]\n        let d = (x0 - d0.key > d1.key - x0) ? d1 : d0\n\n        // svg position relative to document\n        let coords = {\n          x: window.pageXOffset + container.node().getBoundingClientRect().left,\n          y: window.pageYOffset + container.node().getBoundingClientRect().top\n        }\n\n        let tooltipContent = `\n          <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","dataset","open","html","ajax","type","url","openUrl","success","$html","foundation","error","request","status","DataPicker","pickers","this","modal","_createModalContainer","appendTo","current","each","_index","picker","_this","activate","$picker","_setCurrentPicker","name","values","multiple","_index2","div","value","data","prepend","hasClass","isMultiPicker","_this2","_targetFromEvent","_openPicker","tagName","_removeValue","parentNode","autosort","_sort","toggleClass","attr","map","$link","val","text","get","savedData","_this3","_choose","interactive","modify","target","_load","$target","find","done","resp","modalContent","_this4","_handleLinks","_handleCheckboxes","content","click","chooseUrl","_this5","checkbox","$checkbox","checked","_this6","_targetFromValue","change","close","opts","options","Object","assign","dataText","_escape","choosenOption","input","$input","trigger","_removeErrors","_close","children","sort","item1","item2","detach","fadeoutTime","navigator","webdriver","fadeOut","_this7","remove","parent","removeClass","str","replace","char","charCodeAt","formDatePicker","node","language","initialDate","pickTime","languageProps","fdatepicker","dates","format","disableDblClickSelection","leftArrow","rightArrow","delayed","context","func","wait","timeout","args","arguments","clearTimeout","setTimeout","Reflect","apply","CheckBoxesTree","checkboxesTree","querySelectorAll","globalChecks","forEach","global","classList","add","checkGlobalCheck","addEventListener","checkTheCheckBoxes","checkTheCheckParent","checkboxes","index","length","includes","theForm","idx","elem","disabled","targetChecks","checkStatus","indeterminate","checksContext","totalInputs","checkedInputs","indeterminateInputs","Array","from","filter","subfilters","nextElementSibling","contains","checkBoxContext","parents","parentCheck","querySelector","totalCheckSiblings","checkedSiblings","indeterminateSiblings","sibling","FormFilterComponent","$form","id","_getUID","mounted","changeEvents","theCheckBoxesTree","theDataPicker","window","_updateInitialState","_onFormChange","bind","_onFormSubmit","_onPopState","Decidim","PopStateHandler","popStateSubmiter","off","unregisterCallback","queue","contentContainer","closest","currentFormRequest","e","abort","originalEvent","detail","addClass","setContainerForm","registerCallback","currentState","_currentStateAndPath","initialPath","initialState","_path","replaceState","withHost","state","path","location","pathname","search","hash","origin","regexpResult","decodeURIComponent","_getLocation","match","reduce","acc","result","key","array","push","order","element","clear","_clearForm","filterParams","_parseLocationFilterValues","currentOrder","_parseLocationOrderValue","keys","fieldName","isArray","updateChecked","pickerState","load","Rails","fire","ev","eventDetail","newPath","newState","pushState","_saveFilters","formAction","params","serialize","indexOf","save","Date","getUTCMilliseconds","Math","floor","random","pathWithQueryStrings","sessionStorage","pathName","setItem","JSON","stringify","jQuery","fn","lb","days","daysShort","daysMin","months","monthsShort","today","$hashtagContainer","nodatafound","noMatchTemplate","cursor","__quill","getText","tribute","Tribute","cb","post","query","then","response","hashtags","fail","always","$parent","removeAttr","remoteSearch","positionMenu","menuContainer","fillAttr","lookup","item","selectTemplate","range","isContentEditable","quill","insertText","original","Quill","sources","API","position","next","getLength","setSelection","menuItemTemplate","$qlEditor","attach","isActive","$mentionContainer","callback","debounce","users","allowSpaces","menuItemLimit","selectClass","nickname","svg","__typename","iconsPath","config","membersCount","avatarUrl","setupEvents","$element","menu","body","getDocument","appendChild","sessionTimeOutEnabled","$timeoutModal","timeoutInSeconds","parseInt","secondsUntilTimeoutPath","heartbeatPath","interval","preventTimeOutSeconds","endsAt","dayjs","lastAction","$continueSessionButton","lastActivityCheck","preventTimeOutUntil","css","isNaN","setTimer","secondsUntilExpiration","heartbeat","method","contentType","exitInterval","setInterval","seconds","timeSinceLastActivityCheckInSeconds","round","headers","secondsUntilSessionExpires","seconds_remaining","mousemove","scroll","keypress","ajaxComplete","_event","_xhr","settings","clearInterval","enableSessionTimeout","disableSessionTimeout","UTCDate","UTC","Datepicker","that","autoShow","undefined","closeButton","split","isRTL","rtl","DPGlobal","parseFormat","formatText","isInline","isInput","is","component","hasInput","onRender","linkField","linkFormat","minuteStep","pickerPosition","faCSSprefix","closeIcon","minView","convertViewMode","maxView","modes","startViewMode","startView","viewMode","forceParse","template","proxy","mousedown","show","hide","siblings","append","autoclose","keyboardNavigation","todayBtn","todayHighlight","calendarWeeks","i","weekStart","weekEnd","startDate","Infinity","endDate","daysOfWeekDisabled","datesDisabled","setStartDate","setEndDate","setDaysOfWeekDisabled","setDatesDisabled","date","viewDate","parseDate","setValue","fillDow","fillMonths","update","showMode","_attachEvents","prototype","constructor","_events","_detachEvents","focus","keyup","keydown","dblclick","stopPropagation","blur","el","height","outerHeight","place","datepicker","getDate","d","getUTCDate","getTime","getTimezoneOffset","setDate","setUTCDate","formatted","getFormattedDate","formatDate","updateNavArrows","valueOf","zIndexes","zIndex","a","b","pop","textbox","offset","width","outerWidth","fullOffsetTop","top","offsetLeft","left","canShowTop","scrollTop","canShowBottom","fromArgs","currentVal","fill","dowCnt","cell","year","getUTCFullYear","month","getUTCMonth","dayMonth","hours","getUTCHours","minutes","getUTCMinutes","startYear","startMonth","endYear","endMonth","currentDate","titleFormat","en","toggle","prevMonth","day","getDaysInMonth","getUTCDay","nextMonth","clsName","getDay","getFullYear","calWeek","getMonth","inArray","empty","join","actual","currentYear","end","eq","slice","yearCont","hour","visibility","nodeName","toLowerCase","className","dir","navStep","moveHour","moveDate","moveMonth","moveYear","getHours","getMinutes","getSeconds","_setDate","getUTCSeconds","setUTCMonth","setUTCFullYear","substr","oldViewMode","which","new_date","setUTCHours","new_month","test","mag","abs","dateWithinRange","keyCode","newDate","newViewDate","dateChanged","ctrlKey","shiftKey","newViewMode","max","min","changeViewDate","reset","option","shift","$this","_typeof","extend","defaults","Constructor","navFnc","isLeapYear","validParts","nonpunctuation","separators","parts","Error","part_re","part","exec","Datetimepicker","call","filtered","parsed","setters_order","setters_map","hh","v","h","ii","setUTCMinutes","ss","setUTCSeconds","s","yyyy","yy","m","M","MM","mm","dd","cnt","toString","substring","seps","headTemplate","contTemplate","footTemplate","f","r","n","t","o","u","code","p","exports","require","module","defineProperty","_TributeEvents","_interopRequireDefault","_TributeMenuEvents","_TributeRange","_TributeSearch","obj","__esModule","_slicedToArray","arr","_arrayWithHoles","_arr","_n","_d","_e","_s","_i","Symbol","iterator","err","_iterableToArrayLimit","TypeError","_nonIterableRest","_defineProperties","props","descriptor","enumerable","configurable","writable","_default","_ref","_ref$values","_ref$iframe","iframe","_ref$selectClass","_ref$trigger","_ref$autocompleteMode","autocompleteMode","_ref$selectTemplate","_ref$menuItemTemplate","_ref$lookup","_ref$fillAttr","_ref$collection","collection","_ref$menuContainer","_ref$noMatchTemplate","_ref$requireLeadingSp","requireLeadingSpace","_ref$allowSpaces","_ref$replaceTextSuffi","replaceTextSuffix","_ref$positionMenu","_ref$spaceSelectsMatc","spaceSelectsMatch","_ref$searchOpts","searchOpts","_ref$menuItemLimit","instance","_classCallCheck","menuSelected","inputEvent","hasTrailingSpace","defaultSelectTemplate","defaultMenuItemTemplate","console","warn","protoProps","staticProps","matchItem","string","NodeList","HTMLCollection","_attach","hasAttribute","ensureEditable","events","setAttribute","inputTypes","contentEditable","wrapper","createElement","ul","scrollTo","mentionText","currentMentionTextSnapshot","createMenu","tributeMenu","menuEvents","processValues","items","pre","skip","extract","filteredItems","positionMenuAtCaret","noMatchEvent","CustomEvent","dispatchEvent","hideMenu","innerHTML","fragment","createDocumentFragment","li","_this2$_findLiTarget2","_findLiTarget","movementY","setActiveLi","getAttribute","collectionIndex","activeElement","placeCaretAtEnd","externalTrigger","insertTextAtCursor","insertAtCaret","showMenuFor","getSelection","createRange","selectNodeContents","collapse","sel","removeAllRanges","addRange","createTextRange","textRange","moveToElementText","select","getRangeAt","deleteContents","textNode","createTextNode","insertNode","textarea","scrollPos","caretPos","selectionStart","front","back","selectionEnd","style","cssText","replaceText","replaceTriggerText","newValues","concat","_append","_detach","unbind","removeAttribute","TributeEvents","boundKeydown","boundKeyup","boundInput","removeEventListener","shouldDeactivate","commandEvent","callbacks","getElementsByClassName","selectItemAtIndex","updateSelection","triggerChar","getKeyCode","triggers","eventKeyPressed","info","getTriggerInfo","mentionTriggerChar","selectedPath","mentionSelectedPath","selectedOffset","mentionSelectedOffset","collectionItem","enter","escape","tab","space","up","count","selected","scrollHeight","down","lis","liClientRect","getBoundingClientRect","menuClientRect","bottom","scrollDistance","_scrollDistance","includeMargin","currentStyle","getComputedStyle","parseFloat","marginTop","marginBottom","TributeMenuEvents","menuClickEvent","menuContainerScrollEvent","windowResizeEvent","immediate","_arguments","callNow","TributeRange","contentWindow","coordinates","getContentEditableCaretPosition","mentionPosition","getTextAreaOrInputUnderlinePosition","right","scrollIntoView","menuDimensions","offsetWidth","offsetHeight","menuIsOffScreen","isMenuOffScreen","menuIsOffScreenHorizontally","innerWidth","menuIsOffScreenVertically","innerHeight","targetElement","childNodes","nextSibling","previousSibling","getWindowSelection","setStart","setEnd","replaceEvent","pasteHtml","myField","textSuffix","startPos","endPos","anchorNode","lastNode","frag","firstChild","cloneRange","setStartAfter","ctx","ce","getNodePositionInParent","reverse","startOffset","selectedElem","workingNodeContent","textContent","selectStartOffset","textComponent","wordsArray","trim","menuAlreadyActive","isAutocomplete","selectionInfo","getContentEditableSelectedPath","effectiveRange","getTextPrecedingCurrentSelection","lastWordOfEffectiveRange","getLastWordInText","mentionSelectedElement","mostRecentTriggerCharPos","c","lastIndexWithLeadingSpace","lastIndexOf","currentTriggerSnippet","firstSnippetChar","leadingSpace","regex","_char","reversedStr","cidx","len","firstChar","windowWidth","windowHeight","doc","documentElement","windowLeft","pageXOffset","scrollLeft","clientLeft","windowTop","pageYOffset","clientTop","menuTop","menuRight","menuBottom","menuLeft","ceil","dimensions","flipped","isFirefox","mozInnerScreenX","computed","whiteSpace","wordWrap","prop","overflowY","overflow","span","rect","menuContainerIsBody","offsetTop","borderTopWidth","fontSize","borderLeftWidth","getMenuDimensions","parentHeight","scrollStillAvailable","removeChild","selectedNodePosition","markerEl","markerId","prevRange","clientRect","elemTop","elemBottom","maxY","targetY","TributeSearch","pattern","compareString","caseSensitive","rendered","score","patternCache","traverse","render","cache","stringIndex","patternIndex","calculateScore","best","temp","indices","prev","compare","predicate","list","thisArg","bubbles","cancelable","evt","createEvent","initCustomEvent","Event","define","metricsQuery","metrics","metricsData","metricsContainer","metricsParams","downloadMetricData","metricName","csvContent","metricData","encodeURI","container","onclick","isEmptyObject","names","spaceType","spaceId","history","isoParse","Number","x","y","ascending","parseData","title","objectName","showAxis","axis","ratio","showTooltip","tip","agg","margin","titlePadding","scaleTime","scaleLinear","_area","area","y0","y1","valueline","line","domain","extent","nice","circle","tooltip","x0","invert","mouse","bisector","d0","d1","coords","tooltipContent","timeFormat","toLocaleString","xAxis","axisBottom","ticks","timeMonth","tickFormat","tickSize","yAxis","axisLeft","g","selectAll","titleLines","fulltext","wrapwidth","word","words","_line","lineNumber","_x","_y","tspan","getComputedTextLength","areachart","object","errors","log","message","statusText"],"sourceRoot":""}