{"version":3,"file":"js/4659-a5cd3a55990af62b9f2a.js","mappings":"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","sources":["webpack://decidim_application/./vendor/bundle/ruby/2.7.0/gems/decidim-core-0.26.2/app/packs/src/decidim/ajax_modals.js","webpack://decidim_application/./vendor/bundle/ruby/2.7.0/gems/decidim-core-0.26.2/app/packs/src/decidim/configuration.js","webpack://decidim_application/./vendor/bundle/ruby/2.7.0/gems/decidim-core-0.26.2/app/packs/src/decidim/confirm.js","webpack://decidim_application/./vendor/bundle/ruby/2.7.0/gems/decidim-core-0.26.2/app/packs/src/decidim/data_picker.js","webpack://decidim_application/./vendor/bundle/ruby/2.7.0/gems/decidim-core-0.26.2/app/packs/src/decidim/editor.js","webpack://decidim_application/./vendor/bundle/ruby/2.7.0/gems/decidim-core-0.26.2/app/packs/src/decidim/form_datepicker.js","webpack://decidim_application/./vendor/bundle/ruby/2.7.0/gems/decidim-core-0.26.2/app/packs/src/decidim/check_boxes_tree.js","webpack://decidim_application/./vendor/bundle/ruby/2.7.0/gems/decidim-core-0.26.2/app/packs/src/decidim/form_filter.js","webpack://decidim_application/./vendor/bundle/ruby/2.7.0/gems/decidim-core-0.26.2/app/packs/src/decidim/delayed.js","webpack://decidim_application/./vendor/bundle/ruby/2.7.0/gems/decidim-core-0.26.2/app/packs/src/decidim/foundation-datepicker/js/locales/foundation-datepicker.lb.js","webpack://decidim_application/./vendor/bundle/ruby/2.7.0/gems/decidim-core-0.26.2/app/packs/src/decidim/gallery.js","webpack://decidim_application/./vendor/bundle/ruby/2.7.0/gems/decidim-core-0.26.2/app/packs/src/decidim/input_hashtags.js","webpack://decidim_application/./vendor/bundle/ruby/2.7.0/gems/decidim-core-0.26.2/app/packs/src/decidim/input_mentions.js","webpack://decidim_application/./vendor/bundle/ruby/2.7.0/gems/decidim-core-0.26.2/app/packs/src/decidim/input_tags.js","webpack://decidim_application/./vendor/bundle/ruby/2.7.0/gems/decidim-core-0.26.2/app/packs/src/decidim/session_timeouter.js","webpack://decidim_application/./vendor/bundle/ruby/2.7.0/gems/decidim-core-0.26.2/app/packs/src/decidim/vendor/foundation-datepicker.js","webpack://decidim_application/./vendor/bundle/ruby/2.7.0/gems/decidim-core-0.26.2/app/packs/src/decidim/vizzs/metrics.js","webpack://decidim_application/./vendor/bundle/ruby/2.7.0/gems/decidim-core-0.26.2/app/packs/src/decidim/vizzs/areachart.js","webpack://decidim_application//tmp/build/node_modules/moment/locale|sync|/^\\.\\/.*$/"],"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 Configuration {\n  constructor() {\n    this.config = {};\n  }\n\n  set(key, value = null) {\n    if (typeof key === \"object\") {\n      this.config = { ...this.config, ...key };\n    } else {\n      this.config[key] = value;\n    }\n  }\n\n  get(key) {\n    return this.config[key];\n  }\n}\n","/**\n * A custom confirm dialog for Decidim based on Foundation reveals.\n *\n * Note that this needs to be loaded before the application JS in order for\n * it to gain control over the confirm events BEFORE rails-ujs is loaded.\n */\n\nimport Rails from \"@rails/ujs\"\n\nlet TEMPLATE_HTML = null;\n\nclass ConfirmDialog {\n  constructor(sourceElement) {\n    this.$modal = $(TEMPLATE_HTML);\n    this.$source = sourceElement;\n    this.$content = $(\".confirm-modal-content\", this.$modal);\n    this.$buttonConfirm = $(\"[data-confirm-ok]\", this.$modal);\n    this.$buttonCancel = $(\"[data-confirm-cancel]\", this.$modal);\n\n    // Avoid duplicate IDs and append the new modal to the body\n    const titleId = `confirm-modal-title-${Math.random().toString(36).substring(7)}`;\n\n    this.$modal.removeAttr(\"id\");\n    $(\"#confirm-modal-title\", this.$modal).attr(\"id\", titleId);\n    this.$modal.attr(\"aria-labelledby\", titleId);\n\n    $(\"body\").append(this.$modal);\n    this.$modal.foundation();\n  }\n\n  confirm(message) {\n    this.$content.html(message);\n\n    this.$buttonConfirm.off(\"click\");\n    this.$buttonCancel.off(\"click\");\n\n    return new Promise((resolve) => {\n      this.$buttonConfirm.on(\"click\", (ev) => {\n        ev.preventDefault();\n\n        this.$modal.foundation(\"close\");\n        resolve(true);\n        this.$source.focus();\n      });\n      this.$buttonCancel.on(\"click\", (ev) => {\n        ev.preventDefault();\n\n        this.$modal.foundation(\"close\");\n        resolve(false);\n        this.$source.focus();\n      });\n\n      this.$modal.foundation(\"open\").on(\"closed.zf.reveal\", () => {\n        this.$modal.remove();\n      });\n    });\n  }\n}\n\n// Override the default confirm dialog by Rails\n// See:\n// https://github.com/rails/rails/blob/fba1064153d8e2f4654df7762a7d3664b93e9fc8/actionview/app/assets/javascripts/rails-ujs/features/confirm.coffee\n//\n// There is apparently a better way coming in Rails 6:\n// https://github.com/rails/rails/commit/e9aa7ecdee0aa7bb4dcfa5046881bde2f1fe21cc#diff-e1aaa45200e9adcbcb8baf1c5375b5d1\n//\n// The old approach is broken according to https://github.com/rails/rails/issues/36686#issuecomment-514213323\n// so for the moment this needs to be executed **before** Rails.start()\nconst allowAction = (ev, element) => {\n  const message = $(element).data(\"confirm\");\n  if (!message) {\n    return true;\n  }\n\n  if (!Rails.fire(element, \"confirm\")) {\n    return false;\n  }\n\n  if (TEMPLATE_HTML === null) {\n    TEMPLATE_HTML = $(\"#confirm-modal\")[0].outerHTML;\n    $(\"#confirm-modal\").remove();\n  }\n\n  const dialog = new ConfirmDialog(\n    $(element)\n  );\n  dialog.confirm(message).then((answer) => {\n    const completed = Rails.fire(element, \"confirm:complete\", [answer]);\n    if (answer && completed) {\n      // Allow the event to propagate normally and re-dispatch it without\n      // the confirm data attribute which the Rails internal method is\n      // checking.\n      $(element).data(\"confirm\", null);\n      $(element).removeAttr(\"data-confirm\");\n\n      // The submit button click events won't do anything if they are\n      // dispatched as is. In these cases, just submit the underlying form.\n      if (ev.type === \"click\" &&\n        (\n          $(element).is('button[type=\"submit\"]') ||\n          $(element).is('input[type=\"submit\"]')\n        )\n      ) {\n        $(element).parents(\"form\").submit();\n      } else {\n        let origEv = ev.originalEvent || ev;\n        let newEv = origEv;\n        if (typeof Event === \"function\") {\n          // Clone the event because otherwise some click events may not\n          // work properly when re-dispatched.\n          newEv = new origEv.constructor(origEv.type, origEv);\n        }\n        ev.target.dispatchEvent(newEv);\n      }\n    }\n  });\n\n  return false;\n};\nconst handleConfirm = (ev, element) => {\n  if (!allowAction(ev, element)) {\n    Rails.stopEverything(ev);\n  }\n};\nconst getMatchingEventTarget = (ev, selector) => {\n  let target = ev.target;\n  while (!(!(target instanceof Element) || Rails.matches(target, selector))) {\n    target = target.parentNode;\n  }\n\n  if (target instanceof Element) {\n    return target;\n  }\n\n  return null;\n};\nconst handleDocumentEvent = (ev, matchSelectors) => {\n  return matchSelectors.some((currentSelector) => {\n    let target = getMatchingEventTarget(ev, currentSelector);\n    if (target === null) {\n      return false;\n    }\n\n    handleConfirm(ev, target);\n    return true;\n  });\n};\n\ndocument.addEventListener(\"click\", (ev) => {\n  return handleDocumentEvent(ev, [\n    Rails.linkClickSelector,\n    Rails.buttonClickSelector,\n    Rails.formInputClickSelector\n  ]);\n});\ndocument.addEventListener(\"change\", (ev) => {\n  return handleDocumentEvent(ev, [Rails.inputChangeSelector]);\n});\ndocument.addEventListener(\"submit\", (ev) => {\n  return handleDocumentEvent(ev, [Rails.formSubmitSelector]);\n});\n\n// This is needed for the confirm dialog to work with Foundation Abide.\n// Abide registers its own submit click listeners since Foundation 5.6.x\n// which will be handled before the document listeners above. This would\n// break the custom confirm functionality when used with Foundation Abide.\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n  $(Rails.formInputClickSelector).on(\"click.confirm\", (ev) => {\n    handleConfirm(ev, getMatchingEventTarget(ev, Rails.formInputClickSelector));\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\nimport lineBreakButtonHandler from \"src/decidim/editor/linebreak_module\"\nimport \"src/decidim/vendor/image-resize.min\"\nimport \"src/decidim/vendor/image-upload.min\"\n\nconst quillFormats = [\"bold\", \"italic\", \"link\", \"underline\", \"header\", \"list\", \"video\", \"image\", \"alt\", \"break\", \"width\", \"style\", \"code\", \"blockquote\", \"indent\"];\n\nexport default function createQuillEditor(container) {\n  const toolbar = $(container).data(\"toolbar\");\n  const disabled = $(container).data(\"disabled\");\n\n  let quillToolbar = [\n    [\"bold\", \"italic\", \"underline\", \"linebreak\"],\n    [{ list: \"ordered\" }, { list: \"bullet\" }],\n    [\"link\", \"clean\"],\n    [\"code\", \"blockquote\"],\n    [{ \"indent\": \"-1\"}, { \"indent\": \"+1\" }]\n  ];\n\n  let addImage = $(container).data(\"editorImages\");\n\n  if (toolbar === \"full\") {\n    quillToolbar = [\n      [{ header: [2, 3, 4, 5, 6, false] }],\n      ...quillToolbar,\n      [\"video\"]\n    ];\n  } else if (toolbar === \"basic\") {\n    quillToolbar = [\n      ...quillToolbar,\n      [\"video\"]\n    ];\n  }\n\n  if (addImage) {\n    quillToolbar.push([\"image\"]);\n  }\n\n  let modules = {\n    linebreak: {},\n    toolbar: {\n      container: quillToolbar,\n      handlers: {\n        \"linebreak\": lineBreakButtonHandler\n      }\n    }\n  };\n  const $input = $(container).siblings('input[type=\"hidden\"]');\n  container.innerHTML = $input.val() || \"\";\n  const token = $('meta[name=\"csrf-token\"]').attr(\"content\");\n  if (addImage) {\n    modules.imageResize = {\n      modules: [\"Resize\", \"DisplaySize\"]\n    }\n    modules.imageUpload = {\n      url: $(container).data(\"uploadImagesPath\"),\n      method: \"POST\",\n      name: \"image\",\n      withCredentials: false,\n      headers: { \"X-CSRF-Token\": token },\n      callbackOK: (serverResponse, next) => {\n        $(\"div.ql-toolbar\").last().removeClass(\"editor-loading\")\n        next(serverResponse.url);\n      },\n      callbackKO: (serverError) => {\n        $(\"div.ql-toolbar\").last().removeClass(\"editor-loading\")\n        console.log(`Image upload error: ${serverError.message}`);\n      },\n      checkBeforeSend: (file, next) => {\n        $(\"div.ql-toolbar\").last().addClass(\"editor-loading\")\n        next(file);\n      }\n    }\n  }\n  const quill = new Quill(container, {\n    modules: modules,\n    formats: quillFormats,\n    theme: \"snow\"\n  });\n\n  if (disabled) {\n    quill.disable();\n  }\n\n  quill.on(\"text-change\", () => {\n    const text = quill.getText();\n\n    // Triggers CustomEvent with the cursor position\n    // It is required in input_mentions.js\n    let event = new CustomEvent(\"quill-position\", {\n      detail: quill.getSelection()\n    });\n    container.dispatchEvent(event);\n\n    if (text === \"\\n\" || text === \"\\n\\n\") {\n      $input.val(\"\");\n    } else {\n      $input.val(quill.root.innerHTML);\n    }\n  });\n  // After editor is ready, linebreak_module deletes two extraneous new lines\n  quill.emitter.emit(\"editor-ready\");\n\n  if (addImage) {\n    const text = $(container).data(\"dragAndDropHelpText\");\n    $(container).after(`<p class=\"help-text\" style=\"margin-top:-1.5rem;\">${text}</p>`);\n  }\n\n  // After editor is ready, linebreak_module deletes two extraneous new lines\n  quill.emitter.emit(\"editor-ready\");\n\n  return quill;\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 * 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._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\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\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\");\n    }\n\n    this.changeEvents = true;\n  }\n\n  /**\n   * Handles the logic to update the current location after a form change event.\n   * @private\n   * @returns {Void} - Returns nothing.\n   */\n  _onFormChange() {\n    if (!this.changeEvents) {\n      return;\n    }\n\n    const [newPath, newState] = 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    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().setUTCMilliseconds()}-${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 * 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 * 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 \"bootstrap-tagsinput\"\n\n$(() => {\n  const $tagContainer = $(\".js-tags-container\");\n\n  // Initialize\n  $tagContainer.tagsinput({\n    tagClass: \"input__tag\",\n    trimValue: true\n  });\n\n});\n","import moment from \"moment\"\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 = moment().add(timeoutInSeconds, \"seconds\");\n  let lastAction = moment();\n  const $continueSessionButton = $(\"#continueSession\");\n  let lastActivityCheck = moment();\n  // 5 * 60 seconds = 5 Minutes\n  const activityCheckInterval = 5 * 60;\n  const preventTimeOutUntil = moment().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 = moment();\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 = moment().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 (moment() - lastAction) / 1000 < seconds;\n  }\n\n  const exitInterval = setInterval(() => {\n    const timeSinceLastActivityCheckInSeconds = Math.round((moment() - lastActivityCheck) / 1000);\n\n    const popupOpen = $(\"#timeoutModal\").parent().css(\"display\") === \"block\";\n    if (!popupOpen && timeSinceLastActivityCheckInSeconds >= activityCheckInterval) {\n      lastActivityCheck = moment();\n      if (userBeenActiveSince(activityCheckInterval)) {\n        heartbeat();\n        return;\n      }\n    }\n\n    const timeRemaining = Math.round((endsAt - moment()) / 1000);\n    if (timeRemaining > 170) {\n      return;\n    }\n\n    if (moment() < 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 = moment();\n  })\n  $(document).scroll(() => {\n    lastAction = moment();\n  })\n  $(document).keypress(() => {\n    lastAction = moment();\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 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","/* global d3 */\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 * as d3 from \"d3\";\n\n// lib\nexport default function areachart(opts = {}) {\n\n  const parseData = (data) => {\n    // format the data\n    data.forEach((d) => {\n      d.key = d3.isoParse(d.key)\n      d.value = Number(d.value)\n    });\n\n    // order by date\n    return data.sort((x, y) => d3.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 = d3.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 = d3.min([width / 10, 32])\n\n  // set the ranges\n  let x = d3.scaleTime().range([0, width]);\n  let y = d3.scaleLinear().range([height, 0]);\n\n  // define the area\n  let area = d3.area()\n    .x((d) => x(d.key))\n    .y0(height)\n    .y1((d) => y(d.value));\n\n  // define the line\n  let valueline = d3.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(d3.extent(data, (d) => d.key));\n  y.domain([0, d3.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 = d3.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(d3.mouse(this)[0])\n        let i = d3.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            ${d3.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 = d3.axisBottom(x)\n      .ticks(d3.timeMonth)\n      .tickFormat(d3.timeFormat(\"%b %y\"))\n      .tickSize(-height)\n    let yAxis = d3.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 = d3.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","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;"],"names":["$","event","link","$modal","type","url","success","$html","error","Configuration","this","config","value","key","TEMPLATE_HTML","ConfirmDialog","$source","$content","$buttonConfirm","$buttonCancel","titleId","Math","removeAttr","attr","foundation","html","message","off","ev","resolve","handleConfirm","Rails","dialog","completed","answer","origEv","newEv","Event","allowAction","getMatchingEventTarget","target","handleDocumentEvent","matchSelectors","document","DataPicker","modal","appendTo","current","pickers","$picker","_setCurrentPicker","name","values","isMultiPicker","_sort","$link","text","interactive","modify","_load","$target","picker","multiple","autosort","modalContent","chooseUrl","$checkbox","checkbox","close","opts","options","Object","dataText","_escape","data","choosenOption","_targetFromValue","$input","_removeErrors","_close","fadeoutTime","navigator","fadeOut","parent","str","char","quillFormats","createQuillEditor","container","toolbar","disabled","quillToolbar","list","addImage","header","modules","linebreak","handlers","lineBreakButtonHandler","token","method","withCredentials","headers","callbackOK","next","serverResponse","callbackKO","console","serverError","checkBeforeSend","quill","Quill","formats","theme","CustomEvent","detail","formDatePicker","language","initialDate","pickTime","languageProps","format","disableDblClickSelection","leftArrow","rightArrow","CheckBoxesTree","checkboxesTree","globalChecks","forEach","global","input","checkboxes","theForm","elem","targetChecks","checkStatus","allChecks","checksContext","totalInputs","checkedInputs","indeterminateInputs","Array","subfilters","checkBoxContext","parentCheck","totalCheckSiblings","checkedSiblings","indeterminateSiblings","sibling","checkTheCheckParent","checkGlobalCheck","FormFilterComponent","context","timeout","$form","id","mounted","changeEvents","theCheckBoxesTree","theDataPicker","window","_updateInitialState","_onFormChange","bind","args","clearTimeout","setTimeout","Reflect","_onPopState","popStateSubmiter","unregisterCallback","length","queue","contentContainer","closest","find","on","currentFormRequest","e","setContainerForm","registerCallback","initialPath","initialState","replaceState","withHost","currentState","state","path","regexpResult","decodeURIComponent","result","array","acc","match","order","$orderMenu","each","element","_clearForm","filterParams","currentOrder","val","fieldIds","pickerState","newPath","newState","_getLocation","pushState","_saveFilters","formAction","params","Date","pathName","sessionStorage","JSON","jQuery","days","daysShort","daysMin","months","monthsShort","today","$hashtagContainer","nodatafound","noMatchTemplate","cursor","tribute","trigger","query","response","cb","$parent","$tribute","remoteSearch","positionMenu","menuContainer","fillAttr","lookup","item","selectTemplate","range","isContentEditable","position","menuItemTemplate","$qlEditor","$mentionContainer","callback","debounce","allowSpaces","menuItemLimit","selectClass","svg","iconsPath","setupEvents","$element","$tagContainer","tagClass","trimValue","sessionTimeOutEnabled","$timeoutModal","timeoutInSeconds","parseInt","secondsUntilTimeoutPath","heartbeatPath","interval","preventTimeOutSeconds","endsAt","moment","lastAction","$continueSessionButton","lastActivityCheck","preventTimeOutUntil","isNaN","setTimer","secondsUntilExpiration","heartbeat","contentType","exitInterval","setInterval","seconds","timeSinceLastActivityCheckInSeconds","sessionTimeLeft","secondsUntilSessionExpires","settings","clearInterval","UTCDate","Datepicker","that","autoShow","closeButton","dates","split","isRTL","DPGlobal","formatText","isInline","isInput","is","component","hasInput","onRender","linkField","linkFormat","minuteStep","pickerPosition","faCSSprefix","closeIcon","minView","maxView","startViewMode","viewMode","forceParse","click","mousedown","show","hide","addClass","toggleClass","autoclose","keyboardNavigation","todayBtn","todayHighlight","calendarWeeks","i","weekStart","weekEnd","startDate","endDate","daysOfWeekDisabled","datesDisabled","setStartDate","setEndDate","setDaysOfWeekDisabled","setDatesDisabled","date","viewDate","setValue","fillDow","fillMonths","update","showMode","_attachEvents","constructor","_events","_detachEvents","focus","keyup","keydown","dblclick","el","height","place","remove","getDate","d","getUTCDate","setDate","setUTCDate","formatted","getFormattedDate","updateNavArrows","zIndexes","parents","map","zIndex","a","textbox","offset","width","fullOffsetTop","offsetLeft","removeClass","canShowTop","canShowBottom","css","top","left","fromArgs","currentVal","arguments","fill","dowCnt","cell","prepend","append","year","month","dayMonth","hours","minutes","startYear","startMonth","endYear","endMonth","currentDate","prevMonth","day","nextMonth","b","calWeek","clsName","empty","actual","currentYear","yearCont","hour","visibility","dir","moveHour","moveDate","moveMonth","moveYear","_setDate","setUTCMonth","setUTCFullYear","oldViewMode","which","new_date","mag","test","new_month","dateWithinRange","dateChanged","newDate","newViewDate","newViewMode","filter","changeViewDate","reset","option","$this","titleFormat","modes","navFnc","navStep","isLeapYear","getDaysInMonth","validParts","nonpunctuation","parseFormat","separators","parts","parseDate","part_re","part","Datetimepicker","parsed","setters_order","setters_map","hh","h","ii","ss","s","yyyy","yy","m","v","cnt","filtered","slice","formatDate","M","MM","seps","convertViewMode","headTemplate","contTemplate","footTemplate","metrics","metricsData","metricsContainer","metricsParams","downloadMetricData","metricName","csvContent","metricData","encodeURI","parameterize","fetch","info","d3","Number","x","y","parseData","title","objectName","showAxis","ratio","showTooltip","index","margin","titlePadding","area","valueline","circle","tooltip","x0","d0","d1","coords","tooltipContent","xAxis","yAxis","g","titleLines","fulltext","start","word","words","line","lineNumber","_x","_y","tspan","dy","fontSize","parseFloat","getComputedStyle","areachart","object","err","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","code","keys","module","exports"],"sourceRoot":""}