{"version":3,"file":"js/decidim_core-a57a71fffbdc743460f2.js","mappings":"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","sources":["webpack://app/webpack/runtime/chunk loaded","webpack://app/./app/packs/images/ sync ^\\.\\/.*$","webpack://app/./app/packs/src/decidim/decidim_application.js","webpack://app/./app/packs/src/decidim/user_registrations.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/input_multiple_mentions.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/input_character_counter.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/dropdowns_menus.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/icon.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/external_link.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/external_domain_warning.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/form_validator.js","webpack://app/../usr/local/bundle/gems/decidim-comments-0.27.5/app/packs/src/decidim/comments/comments.component.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/input_emoji.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/dialog_mode.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/focus_guard.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/index.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/back_to_list.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/clipboard.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/append_elements.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/form_remote.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/conferences.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/results_listing.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/impersonation.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/data_consent/consent_manager.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/data_consent/index.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/entrypoints/decidim_core.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/account_form.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/append_redirect_url_to_modals.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/callout.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/conversations.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/diff_mode_dropdown.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/floating_help.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/form_attachments.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/history.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/identity_selector_dialog.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/input_autojump.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/notifications.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/represent_user_group.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/responsive_horizontal_tabs.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/security/selfxss_warning.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/start_conversation_dialog.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/tooltip_keep_on_hover.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/vendor/modernizr.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/src/decidim/vendor/social-share-button.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.5/app/packs/images/ sync ^\\.\\/.*$","webpack://app/webpack/bootstrap","webpack://app/webpack/runtime/compat get default export","webpack://app/webpack/runtime/define property getters","webpack://app/webpack/runtime/global","webpack://app/webpack/runtime/hasOwnProperty shorthand","webpack://app/webpack/runtime/node module decorator","webpack://app/webpack/runtime/publicPath","webpack://app/webpack/runtime/jsonp chunk loading","webpack://app/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var map = {\n\t\"./decidim/cc-by-sa--inv.svg\": 47027,\n\t\"./decidim/cc-by-sa.svg\": 55974,\n\t\"./decidim/decidim-logo-mobile--inv.svg\": 22604,\n\t\"./decidim/decidim-logo-mobile.svg\": 99151,\n\t\"./decidim/decidim-logo.svg\": 69349,\n\t\"./decidim/gl_connect_sso.png\": 4108\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 = 24477;","// This file is compiled inside Decidim core pack. Code can be added here and will be executed\n// as part of that pack\n\n// Load images\nrequire.context(\"../../images\", true)\n","$(() => {\n    const $userRegistrationForm = $(\"#register-form\");\n    const $userGroupFields      = $userRegistrationForm.find(\".user-group-fields\");\n    const inputSelector         = 'input[name=\"user[sign_up_as]\"]';\n\n\n    const setGroupFieldsVisibility = (value) => {\n        if (value === \"user\") {\n            $userGroupFields.hide();\n        } else {\n            $userGroupFields.show();\n        }\n    }\n\n    setGroupFieldsVisibility($userRegistrationForm.find(`${inputSelector}:checked`).val());\n\n    $userRegistrationForm.on(\"change\", inputSelector, (event) => {\n        const value = event.target.value;\n\n        setGroupFieldsVisibility(value);\n    });\n});","import AutoComplete from \"src/decidim/autocomplete\";\n\nconst updateSubmitButton = ($fieldContainer, $selectedItems) => {\n  const $form = $fieldContainer.closest(\"form\");\n  if ($form.length < 1) {\n    return;\n  }\n\n  const $submitButton = $form.find(\"button[type='submit']\");\n  if ($selectedItems.children().length === 0) {\n    $submitButton.prop(\"disabled\", true);\n  } else {\n    $submitButton.prop(\"disabled\", false);\n  }\n}\n\n$(() => {\n  const $fieldContainer = $(\".multiple-mentions\");\n  if ($fieldContainer.length < 1) {\n    return;\n  }\n\n  const allMessages = window.Decidim.config.get(\"messages\");\n  const messages = allMessages.mentionsModal || {};\n\n  const $searchInput = $(\"input\", $fieldContainer);\n  const $selectedItems = $(`ul.${$searchInput.data().selected}`);\n  const options = $fieldContainer.data();\n  let selected = [];\n  const iconsPath = window.Decidim.config.get(\"icons_path\");\n  const removeLabel = messages.removeRecipient || \"Remove recipient %name%\";\n\n  let emptyFocusElement = $fieldContainer[0].querySelector(\".empty-list\");\n  if (!emptyFocusElement) {\n    emptyFocusElement = document.createElement(\"div\");\n    emptyFocusElement.tabIndex = \"-1\";\n    emptyFocusElement.className = \"empty-list\";\n    $selectedItems.before(emptyFocusElement);\n  }\n\n  updateSubmitButton($fieldContainer, $selectedItems);\n  const autoComplete = new AutoComplete($searchInput[0], {\n    dataMatchKeys: [\"name\", \"nickname\"],\n    dataSource: (query, callback) => {\n      $.post(\"/api\", {\n        \"query\": `\n          {\n            users(filter:{wildcard:\"${query}\",excludeIds:[]})\n              {\n                id,nickname,name,avatarUrl,__typename,...on UserGroup{membersCount},...on User{\n                  directMessagesEnabled\n                }\n              }\n          }`\n      }).then((response) => {\n        callback(response.data.users);\n      });\n    },\n    dataFilter: (list) => {\n      return list.filter(\n        (item) => !selected.includes(item.value.id)\n      );\n    },\n    modifyResult: (element, value) => {\n      $(element).html(`\n        <span class=\"author__avatar\"><img src=\"${value.avatarUrl}\" alt=\"${value.name}\"></span>\n        <strong>${value.nickname}</strong>\n        <small>${value.name}</small>\n      `);\n      if (value.directMessagesEnabled === \"false\") {\n        $(element).addClass(\"disabled\");\n        $(element).append(`<span>${$searchInput.data().directMessagesDisabled}</span>`);\n      }\n      if (value.membersCount) {\n        $(element).append(`<span class=\"is-group\">${value.membersCount}x <svg class=\"icon--members icon\"><use href=\"${iconsPath}#icon-members\"/></svg></span>`);\n      }\n    }\n  });\n\n  $searchInput.on(\"selection\", (event) => {\n    const feedback = event.detail;\n    const selection = feedback.selection;\n    const id = selection.value.id;\n    if (selected.length >= 9 || selection.value.directMessagesEnabled === \"false\") {\n      return;\n    }\n\n    const label = removeLabel.replace(\"%name%\", selection.value.name);\n    $selectedItems.append(`\n      <li tabindex=\"-1\">\n        <input type=\"hidden\" name=\"${options.name}\" value=\"${id}\">\n        <img src=\"${selection.value.avatarUrl}\" class=\"author__avatar\" alt=\"${selection.value.name}\">\n        <b>${selection.value.name}</b>\n        <button type=\"button\" class=\"float-right\" data-remove=\"${id}\" tabindex=\"0\" aria-controls=\"0\" aria-label=\"${label}\">&times;</button>\n      </li>\n    `);\n\n    autoComplete.setInput(\"\");\n    selected.push(id);\n    updateSubmitButton($fieldContainer, $selectedItems);\n\n    $selectedItems.find(`*[data-remove=\"${id}\"]`).on(\"keypress click\", (evt) => {\n      const target = evt.target.parentNode;\n      if (target.tagName === \"LI\") {\n        const focusElement = target.nextElementSibling || target.previousElementSibling || emptyFocusElement;\n\n        selected = selected.filter((identifier) => identifier !== id);\n        target.remove();\n\n        updateSubmitButton($fieldContainer, $selectedItems);\n        focusElement.focus();\n      }\n    })\n  })\n})\n","/* eslint max-lines: [\"error\", {\"max\": 350, \"skipBlankLines\": true}] */\n\nconst COUNT_KEY = \"%count%\";\n// How often SR announces the message in relation to maximum characters. E.g.\n// if max characters is 1000, screen reader announces the remaining characters\n// every 100 (= 0.1 * 1000) characters. This will be \"floored\" to the closest\n// 100 if the maximum characters > 100. E.g. if max characters is 5500, the\n// threshold is 500 (= Math.floor(550 / 100) * 100). With 100 or less\n// characters, this ratio is omitted and the announce threshold is always set to\n// 10.\nconst SR_ANNOUNCE_THRESHOLD_RATIO = 0.1;\n// The number of characters left after which every keystroke will be announced.\nconst SR_ANNOUNCE_EVERY_THRESHOLD = 10;\nconst DEFAULT_MESSAGES = {\n  charactersAtLeast: {\n    one: `at least ${COUNT_KEY} character`,\n    other: `at least ${COUNT_KEY} characters`\n  },\n  charactersLeft: {\n    one: `${COUNT_KEY} character left`,\n    other: `${COUNT_KEY} characters left`\n  }\n};\nlet MESSAGES = DEFAULT_MESSAGES;\n\nexport default class InputCharacterCounter {\n  static configureMessages(messages) {\n    MESSAGES = $.extend(DEFAULT_MESSAGES, messages);\n  }\n\n  constructor(input) {\n    this.$input = input;\n    this.$target = $(this.$input.data(\"remaining-characters\"));\n    this.minCharacters = parseInt(this.$input.attr(\"minlength\"), 10);\n    this.maxCharacters = parseInt(this.$input.attr(\"maxlength\"), 10);\n    this.describeByCounter = this.$input.attr(\"type\") !== \"hidden\" && typeof this.$input.attr(\"aria-describedby\") === \"undefined\";\n\n    // Define the closest length for the input \"gaps\" defined by the threshold.\n    if (this.maxCharacters > 10) {\n      if (this.maxCharacters > 100) {\n        this.announceThreshold = Math.floor(this.maxCharacters * SR_ANNOUNCE_THRESHOLD_RATIO);\n      } else {\n        this.announceThreshold = 10;\n      }\n\n      // The number of characters left after which every keystroke will be announced.\n      this.announceEveryThreshold = SR_ANNOUNCE_EVERY_THRESHOLD;\n    } else {\n      this.announceThreshold = 1;\n      this.announceEveryThreshold = 1;\n    }\n\n    let targetId = this.$target.attr(\"id\");\n    if (typeof targetId === \"undefined\") {\n      if (this.$input.attr(\"id\") && this.$input.attr(\"id\").length > 0) {\n        targetId = `${this.$input.attr(\"id\")}_characters`;\n      } else {\n        targetId = `characters_${Math.random().toString(36).substr(2, 9)}`;\n      }\n    }\n\n    if (this.$target.length > 0) {\n      this.$target.attr(\"id\", targetId)\n    } else {\n      this.$target = $(`<span id=\"${targetId}\" class=\"form-input-extra-before\" />`)\n\n      // If input is a hidden for WYSIWYG editor add it at the end\n      if (this.$input.parent().is(\".editor\")) {\n        this.$input.parent().after(this.$target);\n      }\n      // Prefix and suffix columns are wrapped in columns, so put the\n      // character counter before that.\n      else if (\n        this.$input.parent().is(\".columns\") &&\n        this.$input.parent().parent().is(\".row\")\n      ) {\n        this.$input.parent().parent().after(this.$target);\n      } else {\n        this.$input.after(this.$target);\n      }\n    }\n\n    if (this.$target.length > 0 && (this.maxCharacters > 0 || this.minCharacters > 0)) {\n      // Create the screen reader target element. We don't want to constantly\n      // announce every change to screen reader, only occasionally.\n      this.$srTarget = $(\n        `<span role=\"status\" id=\"${targetId}_sr\" class=\"show-for-sr remaining-character-count-sr\" />`\n      );\n      this.$target.before(this.$srTarget);\n      this.$target.attr(\"aria-hidden\", \"true\");\n\n      this.$userInput = this.$input;\n\n      // In WYSIWYG editors (Quill) we need to find the active editor from the\n      // DOM node. Quill has the experimental \"find\" method that should work\n      // fine in this case\n      if (Quill && this.$input.parent().is(\".editor\")) {\n        // Wait until the next javascript loop so Quill editors are created\n        setTimeout(() => {\n          this.editor = Quill.find(this.$input.siblings(\".editor-container\")[0]);\n          this.$userInput = $(this.editor.root);\n          this.initialize();\n        });\n      } else {\n        this.initialize();\n      }\n    }\n  }\n\n  initialize() {\n    this.updateInputLength();\n    this.previousInputLength = this.inputLength;\n\n    this.bindEvents();\n    this.setDescribedBy(true);\n  }\n\n  setDescribedBy(active) {\n    if (!this.describeByCounter) {\n      return;\n    }\n\n    if (active) {\n      this.$userInput.attr(\"aria-describedby\", this.$srTarget.attr(\"id\"));\n    } else {\n      this.$userInput.removeAttr(\"aria-describedby\");\n    }\n  }\n\n  bindEvents() {\n    if (this.editor) {\n      this.editor.on(\"text-change\", () => {\n        this.handleInput();\n      });\n    } else {\n      this.$userInput.on(\"input\", () => {\n        this.handleInput();\n      });\n    }\n\n    this.$userInput.on(\"keyup\", () => {\n      this.updateStatus();\n    });\n    this.$userInput.on(\"focus\", () => {\n      this.updateScreenReaderStatus();\n    });\n    this.$userInput.on(\"blur\", () => {\n      this.updateScreenReaderStatus();\n      this.setDescribedBy(true);\n    });\n    if (this.$userInput.get(0) !== null) {\n      this.$userInput.get(0).addEventListener(\"emoji.added\", () => {\n        this.updateStatus();\n      });\n    }\n    this.updateStatus();\n    this.updateScreenReaderStatus();\n  }\n\n  getInputLength() {\n    return this.inputLength;\n  }\n\n  updateInputLength() {\n    this.previousInputLength = this.inputLength;\n    if (this.editor) {\n      this.inputLength = this.editor.getLength();\n    } else {\n      this.inputLength = this.$input.val().length;\n    }\n  }\n\n  handleInput() {\n    this.updateInputLength();\n    this.checkScreenReaderUpdate();\n    // If the input is \"described by\" the character counter, some screen\n    // readers (NVDA) announce the status twice when it is updated. By\n    // removing the aria-describedby attribute while the user is typing makes\n    // the screen reader announce the status only once.\n    this.setDescribedBy(false);\n  }\n\n  /**\n   * This compares the current inputLength to the previous value and decides\n   * whether the user is currently adding or deleting characters from the view.\n   *\n   * @returns {String} The input direction either \"ins\" for insert or \"del\" for\n   *   delete.\n   */\n  getInputDirection() {\n    if (this.inputLength < this.previousInputLength) {\n      return \"del\";\n    }\n\n    return \"ins\";\n  }\n\n  getScreenReaderLength() {\n    const currentLength = this.getInputLength();\n    if (this.maxCharacters < 10) {\n      return currentLength;\n    } else if (this.maxCharacters - currentLength <= this.announceEveryThreshold) {\n      return currentLength;\n    }\n\n    const srLength = currentLength - currentLength % this.announceThreshold;\n\n    // Prevent the screen reader telling too many characters left if the user\n    // deletes a characters. This can cause confusing experience e.g. when the\n    // user is closing the maximum amount of characters, so if the previous\n    // announcement was \"10 characters left\" and the user removes one character,\n    // the screen reader would announce \"100 characters left\" next time (when\n    // they actually have only 11 characters left). Similar when they are\n    // deleting a character at 900 characters, the screen reader would announce\n    // \"1000 characters left\" even when they only have 901 characters left.\n    if (this.getInputDirection() === \"del\") {\n      // The first branch makes sure that if the SR length matches the actual\n      // length, it will be always announced.\n      if (srLength === currentLength) {\n        return srLength;\n      // The second branch checks that if we are at the final threshold, we\n      // should not announce \"0 characters left\" when the user deletes more than\n      // the \"announce after every stroke\" limit (this.announceEveryThreshold).\n      } else if (this.maxCharacters - srLength === this.announceThreshold) {\n        return this.announcedAt || currentLength;\n      // The third branch checks that when deleting characters, we should\n      // announce the next threshold to get accurate annoucement. E.g. when we\n      // have 750 characters left and the user deletes 100 characters at once,\n      // we should announce \"700 characters left\" after that deletion.\n      } else if (srLength < currentLength) {\n        return srLength + this.announceThreshold;\n      }\n    // This fixes an issue in the following situation:\n    // 1. 750 characters left\n    // 2. Delete 100 characters in a row\n    // 3. SR: \"800 characters left\" (actual 850)\n    // 4. Type one additional character\n    // 5. Without this, SR would announce \"900 characters left\" = confusing\n    } else if (srLength < this.announcedAt) {\n      return this.announcedAt;\n    }\n\n    return srLength;\n  }\n\n  getMessages(currentLength = null) {\n    const showMessages = [];\n    let inputLength = currentLength;\n    if (inputLength === null) {\n      inputLength = this.getInputLength()\n    }\n\n    if (this.minCharacters > 0) {\n      let message = MESSAGES.charactersAtLeast.other;\n      if (this.minCharacters === 1) {\n        message = MESSAGES.charactersAtLeast.one;\n      }\n      showMessages.push(message.replace(COUNT_KEY, this.minCharacters));\n    }\n\n    if (this.maxCharacters > 0) {\n      const remaining = this.maxCharacters - inputLength;\n      let message = MESSAGES.charactersLeft.other;\n      if (remaining === 1) {\n        message = MESSAGES.charactersLeft.one;\n      }\n      this.$input[0].dispatchEvent(\n        new CustomEvent(\"characterCounter\", {detail: {remaining: remaining}})\n      );\n      showMessages.push(message.replace(COUNT_KEY, remaining));\n    }\n\n    return showMessages;\n  }\n\n  updateStatus() {\n    this.$target.text(this.getMessages().join(\", \"));\n  }\n\n  checkScreenReaderUpdate() {\n    if (this.maxCharacters < 1) {\n      return;\n    }\n\n    const currentLength = this.getScreenReaderLength();\n    if (currentLength === this.announcedAt) {\n      return;\n    }\n\n    this.announcedAt = currentLength;\n    this.updateScreenReaderStatus(currentLength);\n  }\n\n  updateScreenReaderStatus(currentLength = null) {\n    this.$srTarget.text(this.getMessages(currentLength).join(\", \"));\n  }\n}\n\nconst createCharacterCounter = ($input) => {\n  if (typeof $input !== \"undefined\" && $input.length) {\n    $input.data(\"remaining-characters-counter\", new InputCharacterCounter($input));\n  }\n}\n\n$(() => {\n  $(\"input[type='text'], textarea, .editor>input[type='hidden']\").each((_i, elem) => {\n    const $input = $(elem);\n\n    if (!$input.is(\"[minlength]\") && !$input.is(\"[maxlength]\")) {\n      return;\n    }\n\n    createCharacterCounter($input);\n  });\n});\n\nexport {InputCharacterCounter, createCharacterCounter};\n","/* eslint-disable require-jsdoc */\n\n// This will apply some fixes for the Foundation dropdown menu element\n// according to W3C instructions at:\n// https://www.w3.org/TR/wai-aria-practices/examples/menu-button/menu-button-links.html\n//\n// NOTE:\n// This needs to run AFTER Foundation has been initialized because those\n// initializers will affect the drop down menu elements.\nexport default function fixDropdownMenus() {\n  $(\"[data-dropdown-menu]\").each((_i, element) => {\n    // This will break navigation on macOS VoiceOver app since it will let the\n    // user to focus on the li element instead of the <a> element where we\n    // actually need the focus to be in.\n    $(\"li.is-dropdown-submenu-parent\", element).removeAttr(\"aria-haspopup\").removeAttr(\"aria-label\");\n    $(\"li.is-dropdown-submenu-parent > a:first\", element).removeAttr(\"aria-label\");\n    // Foundation marks the wrong role for the submenu elements\n    $(\"ul.is-dropdown-submenu\", element).attr(\"role\", \"menu\");\n  })\n}\n\n// Ensure the first element is always focused when a dropdown is opened as\n// this would not always happen when using a screen reader. If this is not\n// done, the screen reader will stay quiet when the menu opens which can lead\n// to the blind user not understanding the menu has opened.\n$(() => {\n  $(\"[data-dropdown-menu]\").on(\"show.zf.dropdownMenu\", (_i, element) => {\n    $(\"li:first > a\", element).focus();\n  });\n})\n","const DEFAULT_ATTRIBUTES = {\n  role: \"img\",\n  \"aria-hidden\": \"true\"\n};\n\n/**\n * Generates a Decidim icon element and returns it as a string.\n * @param {String} iconKey - the key of the icon to be generated\n * @param {Object} attributes - extra attributes to define for the icon SVG\n * @param {int} wait - number of milliseconds to wait before executing the function.\n * @private\n * @returns {Void} - Returns nothing.\n */\nexport default function icon(iconKey, attributes = {}) {\n  const iconAttributes = $.extend(DEFAULT_ATTRIBUTES, attributes);\n  const title = iconAttributes.title || iconAttributes.ariaLabel;\n  Reflect.deleteProperty(iconAttributes, \"title\");\n\n  const htmlAttributes = {\n    \"class\": `icon icon--${iconKey}`\n  };\n  Object.keys(iconAttributes).forEach((key) => {\n    // Convert the key to dash-format.\n    const newKey = key.replace(/([A-Z])/g, (ucw) => `-${ucw[0].toLowerCase()}`);\n    if (typeof htmlAttributes[key] === \"undefined\") {\n      htmlAttributes[newKey] = iconAttributes[key];\n    } else {\n      htmlAttributes[newKey] = `${htmlAttributes[newKey]} ${iconAttributes[key]}`;\n    }\n  });\n\n  const iconsPath =  window.Decidim.config.get(\"icons_path\");\n  const elHtml = `<svg><use href=\"${iconsPath}#icon-${iconKey}\"></use></svg>`;\n  const $el = $(elHtml);\n  if (title) {\n    $el.prepend(`<title>${title}</title>`);\n  } else {\n    // This keeps accessibility audit tools happy\n    $el.prepend(`<title>${iconKey}</title>`);\n    // Force hidden if title is not defined\n    htmlAttributes[\"aria-hidden\"] = \"true\";\n  }\n  $el.attr(htmlAttributes);\n\n  return $(\"<div />\").append($el).html();\n}\n","import icon from \"src/decidim/icon\"\n\nconst EXCLUDE_CLASSES = [\n  \"card--list__data__icon\",\n  \"footer-social__icon\",\n  \"logo-cityhall\"\n];\nconst EXCLUDE_ANCESTOR_CLASSES = [\n  \"editor-container\"\n]\nconst EXCLUDE_REL = [\"license\", \"decidim\"];\n\nconst DEFAULT_MESSAGES = {\n  externalLink: \"External link\"\n};\nlet MESSAGES = DEFAULT_MESSAGES;\n\nexport default class ExternalLink {\n  static configureMessages(messages) {\n    MESSAGES = $.extend(DEFAULT_MESSAGES, messages);\n  }\n\n  constructor(link) {\n    this.$link = link;\n\n    this.setup();\n  }\n\n  setup() {\n    if (EXCLUDE_CLASSES.some((cls) => this.$link.hasClass(cls))) {\n      return;\n    }\n    if (EXCLUDE_ANCESTOR_CLASSES.some((cls) => this.$link.parents().hasClass(cls))) {\n      return;\n    }\n    if (\n      EXCLUDE_REL.some((rel) => {\n        const linkRels = `${this.$link.attr(\"rel\")}`.split(\" \");\n        return linkRels.indexOf(rel) > -1;\n      })\n    ) {\n      return;\n    }\n\n    let $target = this.$link;\n    if (this.$link[0].hasAttribute(\"data-external-link-target\")) {\n      $target = $(this.$link.data(\"external-link-target\"), this.$link);\n      if ($target.length < 1) {\n        $target = this.$link;\n      }\n    }\n\n    $target.addClass(\"external-link-container\");\n    let spacer = \"&nbsp;\";\n    if (this.$link[0].hasAttribute(\"data-external-link-spacer\")) {\n      spacer = this.$link.data(\"external-link-spacer\");\n    } else if ($target.text().trim().length < 1) {\n      // Fixes image links extra space\n      spacer = \"\";\n    }\n\n    $target.append(`${spacer}${this.generateElement()}`);\n  }\n\n  generateElement() {\n    let content = `${this.generateIcon()}${this.generateScreenReaderLabel()}`;\n\n    return `<span class=\"external-link-indicator\">${content}</span>`;\n  }\n\n  generateIcon() {\n    return icon(\"external-link\");\n  }\n\n  generateScreenReaderLabel() {\n    return `<span class=\"show-for-sr\">(${MESSAGES.externalLink})</span>`;\n  }\n}\n","/* eslint-disable require-jsdoc */\n\nexport default function updateExternalDomainLinks($target) {\n  const whitelist = window.Decidim.config.get(\"external_domain_whitelist\")\n\n  if (window.location.pathname === \"/link\") {\n    return;\n  }\n\n  $(\"a\", $target).filter((_i, link) => {\n    const $link = $(link);\n    if (!$link[0].hasAttribute(\"href\") || $link.parents(\".editor-container\").length > 0) {\n      return false;\n    }\n\n    const parts = $link.attr(\"href\").match(/^(([a-z]+):)?\\/\\/([^/:]+)(:[0-9]*)?(\\/.*)?$/) || null;\n    if (!parts) {\n      return false;\n    }\n\n    const domain = parts[3].replace(/^www\\./, \"\")\n    if (whitelist.includes(domain)) {\n      return false;\n    }\n\n    return true;\n  }).each((_n, link) => {\n    const $link = $(link);\n    const externalHref = `/link?external_url=${encodeURIComponent($link.attr(\"href\"))}`;\n    $link.attr(\"href\", externalHref)\n    $link.attr(\"data-remote\", true)\n  });\n}\n","const DEFAULT_MESSAGES = {\n  correctErrors: \"There are errors on the form, please correct them.\"\n};\nlet MESSAGES = DEFAULT_MESSAGES;\n\nexport default class FormValidator {\n  static configureMessages(messages) {\n    MESSAGES = $.extend(DEFAULT_MESSAGES, messages);\n  }\n\n  constructor(form) {\n    this.$form = form;\n\n    this.$form.on(\"form-error.decidim\", () => {\n      this.handleError();\n    });\n  }\n\n  handleError() {\n    this.announceFormError();\n\n    $(\".is-invalid-input:first\", this.$form).focus();\n  }\n\n  /**\n   * This announces immediately to the screen reader that there are errors on\n   * the form that need to be fixed. Does not work on all screen readers but\n   * works e.g. in Windows+Firefox+NVDA and macOS+Safari+VoiceOver\n   * combinations.\n   *\n   * @returns {undefined}\n   */\n  announceFormError() {\n    let $announce = $(\".sr-announce\", this.$form);\n    if ($announce.length > 0) {\n      $announce.remove();\n    }\n    $announce = $(\"<div />\");\n    $announce.attr(\"class\", \"sr-announce show-for-sr\");\n    $announce.attr(\"aria-live\", \"assertive\");\n    this.$form.prepend($announce);\n\n    setTimeout(() => {\n      $announce.text(MESSAGES.correctErrors);\n    }, 100);\n  }\n}\n\n$(() => {\n  $(\"form\").each((_i, el) => {\n    $(el).data(\"form-validator\", new FormValidator($(el)));\n  });\n  $(document).on(\"forminvalid.zf.abide\", function(_ev, form) {\n    form.trigger(\"form-error.decidim\");\n  })\n});\n","/* eslint id-length: [\"error\", { \"exceptions\": [\"$\"] }] */\n/* eslint max-lines: [\"error\", {\"max\": 350, \"skipBlankLines\": true}] */\n\n\n/**\n * A plain Javascript component that handles the comments.\n *\n * @class\n * @augments Component\n */\n\n// This is necessary for testing purposes\nconst $ = window.$;\n\nimport Rails from \"@rails/ujs\";\n\nimport { createCharacterCounter } from \"src/decidim/input_character_counter\"\nimport ExternalLink from \"src/decidim/external_link\"\nimport updateExternalDomainLinks from \"src/decidim/external_domain_warning\"\n\nexport default class CommentsComponent {\n  constructor($element, config) {\n    this.$element = $element;\n    this.commentableGid = config.commentableGid;\n    this.commentsUrl = config.commentsUrl;\n    this.rootDepth = config.rootDepth;\n    this.order = config.order;\n    this.lastCommentId = config.lastCommentId;\n    this.pollingInterval = config.pollingInterval || 15000;\n    this.singleComment = config.singleComment;\n    this.toggleTranslations = config.toggleTranslations;\n    this.id = this.$element.attr(\"id\") || this._getUID();\n    this.mounted = false;\n  }\n\n  /**\n   * Handles the logic for mounting the component\n   * @public\n   * @returns {Void} - Returns nothing\n   */\n  mountComponent() {\n    if (this.$element.length > 0 && !this.mounted) {\n      this.mounted = true;\n      this._initializeComments(this.$element);\n      if (!this.singleComment) {\n        $(\".add-comment textarea\", this.$element).prop(\"disabled\", true);\n        this._fetchComments(() => {\n          $(\".add-comment textarea\", this.$element).prop(\"disabled\", false);\n        });\n      }\n\n      $(\".order-by__dropdown .is-submenu-item a\", this.$element).on(\"click.decidim-comments\", () => this._onInitOrder());\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._stopPolling();\n\n      $(\".add-comment .opinion-toggle .button\", this.$element).off(\"click.decidim-comments\");\n      $(\".add-comment textarea\", this.$element).off(\"input.decidim-comments\");\n      $(\".order-by__dropdown .is-submenu-item a\", this.$element).off(\"click.decidim-comments\");\n      $(\".add-comment form\", this.$element).off(\"submit.decidim-comments\");\n      $(\".add-comment textarea\", this.$element).each((_i, el) => el.removeEventListener(\"emoji.added\", this._onTextInput));\n    }\n  }\n\n  /**\n   * Adds a new thread to the comments section.\n   * @public\n   * @param {String} threadHtml - The HTML content for the thread.\n   * @param {Boolean} fromCurrentUser - A boolean indicating whether the user\n   *   herself was the author of the new thread. Defaults to false.\n   * @returns {Void} - Returns nothing\n   */\n  addThread(threadHtml, fromCurrentUser = false) {\n    const $parent = $(\".comments:first\", this.$element);\n    const $comment = $(threadHtml);\n    const $threads = $(\".comment-threads\", this.$element);\n    this._addComment($threads, $comment);\n    this._finalizeCommentCreation($parent, fromCurrentUser);\n  }\n\n  /**\n   * Adds a new reply to an existing comment.\n   * @public\n   * @param {Number} commentId - The ID of the comment for which to add the\n   *   reply to.\n   * @param {String} replyHtml - The HTML content for the reply.\n   * @param {Boolean} fromCurrentUser - A boolean indicating whether the user\n   *   herself was the author of the new reply. Defaults to false.\n   * @returns {Void} - Returns nothing\n   */\n  addReply(commentId, replyHtml, fromCurrentUser = false) {\n    const $parent = $(`#comment_${commentId}`);\n    const $comment = $(replyHtml);\n    const $replies = $(`#comment-${commentId}-replies`);\n    this._addComment($replies, $comment);\n    $replies.siblings(\".comment__additionalreply\").removeClass(\"hide\");\n    this._finalizeCommentCreation($parent, fromCurrentUser);\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 `comments-${new Date().setUTCMilliseconds()}-${Math.floor(Math.random() * 10000000)}`;\n  }\n\n  /**\n   * Initializes the comments for the given parent element.\n   * @private\n   * @param {jQuery} $parent The parent element to initialize.\n   * @returns {Void} - Returns nothing\n   */\n  _initializeComments($parent) {\n    $(\".add-comment\", $parent).each((_i, el) => {\n      const $add = $(el);\n      const $form = $(\"form\", $add);\n      const $opinionButtons = $(\".opinion-toggle .button\", $add);\n      const $text = $(\"textarea\", $form);\n\n      $opinionButtons.on(\"click.decidim-comments\", this._onToggleOpinion);\n      $text.on(\"input.decidim-comments\", this._onTextInput);\n\n      $(document).trigger(\"attach-mentions-element\", [$text.get(0)]);\n\n      $form.on(\"submit.decidim-comments\", () => {\n        const $submit = $(\"button[type='submit']\", $form);\n\n        $submit.attr(\"disabled\", \"disabled\");\n        this._stopPolling();\n      });\n\n      if ($text.length && $text.get(0) !== null) {\n        // Attach event to the DOM node, instead of the jQuery object\n        $text.get(0).addEventListener(\"emoji.added\", this._onTextInput);\n      }\n    });\n  }\n\n  /**\n   * Adds the given comment element to the given target element and\n   * initializes it.\n   * @private\n   * @param {jQuery} $target - The target element to add the comment to.\n   * @param {jQuery} $container - The comment container element to add.\n   * @returns {Void} - Returns nothing\n   */\n  _addComment($target, $container) {\n    let $comment = $(\".comment\", $container);\n    if ($comment.length < 1) {\n      // In case of a reply\n      $comment = $container;\n    }\n    this.lastCommentId = parseInt($comment.data(\"comment-id\"), 10);\n\n    $target.append($container);\n    $container.foundation();\n    this._initializeComments($container);\n    createCharacterCounter($(\".add-comment textarea\", $container));\n    $container.find('a[target=\"_blank\"]').each((_i, elem) => {\n      const $link = $(elem);\n      $link.data(\"external-link\", new ExternalLink($link));\n    });\n    updateExternalDomainLinks($container)\n  }\n\n  /**\n   * Finalizes the new comment creation after the comment adding finishes\n   * successfully.\n   * @private\n   * @param {jQuery} $parent - The parent comment element to finalize.\n   * @param {Boolean} fromCurrentUser - A boolean indicating whether the user\n   *   herself was the author of the new comment.\n   * @returns {Void} - Returns nothing\n   */\n  _finalizeCommentCreation($parent, fromCurrentUser) {\n    if (fromCurrentUser) {\n      const $add = $(\"> .add-comment\", $parent);\n      const $text = $(\"textarea\", $add);\n      const characterCounter = $text.data(\"remaining-characters-counter\");\n      $text.val(\"\");\n      if (characterCounter) {\n        characterCounter.updateStatus();\n      }\n      if (!$add.parent().is(\".comments\")) {\n        $add.addClass(\"hide\");\n      }\n    }\n\n    // Restart the polling\n    this._pollComments();\n  }\n\n  /**\n   * Sets a timeout to poll new comments.\n   * @private\n   * @returns {Void} - Returns nothing\n   */\n  _pollComments() {\n    this._stopPolling();\n\n    this.pollTimeout = setTimeout(() => {\n      this._fetchComments();\n    }, this.pollingInterval);\n  }\n\n  /**\n   * Sends an ajax request based on current\n   * params to get comments for the component\n   * @private\n   * @param {Function} successCallback A callback that is called after a\n   *   successful fetch\n   * @returns {Void} - Returns nothing\n   */\n  _fetchComments(successCallback = null) {\n    Rails.ajax({\n      url: this.commentsUrl,\n      type: \"GET\",\n      data: new URLSearchParams({\n        \"commentable_gid\": this.commentableGid,\n        \"root_depth\": this.rootDepth,\n        \"order\": this.order,\n        \"after\": this.lastCommentId,\n        ...(this.toggleTranslations && { \"toggle_translations\": this.toggleTranslations }),\n        ...(this.lastCommentId && { \"after\": this.lastCommentId })\n      }),\n      success: () => {\n        if (successCallback) {\n          successCallback();\n        }\n        this._pollComments();\n      }\n    });\n  }\n\n  /**\n   * Stops polling for new comments.\n   * @private\n   * @returns {Void} - Returns nothing\n   */\n  _stopPolling() {\n    if (this.pollTimeout) {\n      clearTimeout(this.pollTimeout);\n    }\n  }\n\n  /**\n   * Sets the loading comments element visible in the view.\n   * @private\n   * @returns {Void} - Returns nothing\n   */\n  _setLoading() {\n    const $container = $(\"> .comments-container\", this.$element);\n    $(\"> .comments\", $container).addClass(\"hide\");\n    $(\"> .loading-comments\", $container).removeClass(\"hide\");\n  }\n\n  /**\n   * Event listener for the ordering links.\n   * @private\n   * @returns {Void} - Returns nothing\n   */\n  _onInitOrder() {\n    this._stopPolling();\n    this._setLoading();\n  }\n\n  /**\n   * Event listener for the opinion toggle buttons.\n   * @private\n   * @param {Event} ev - The event object.\n   * @returns {Void} - Returns nothing\n   */\n  _onToggleOpinion(ev) {\n    let $btn = $(ev.target);\n    if (!$btn.is(\".button\")) {\n      $btn = $btn.parents(\".button\");\n    }\n\n    const $add = $btn.closest(\".add-comment\");\n    const $form = $(\"form\", $add);\n    const $opinionButtons = $(\".opinion-toggle .button\", $add);\n    const $selectedState = $(\".opinion-toggle .selected-state\", $add);\n    const $alignment = $(\".alignment-input\", $form);\n\n    $opinionButtons.removeClass(\"is-active\").attr(\"aria-pressed\", \"false\");\n    $btn.addClass(\"is-active\").attr(\"aria-pressed\", \"true\");\n\n    if ($btn.is(\".opinion-toggle--ok\")) {\n      $alignment.val(1);\n    } else if ($btn.is(\".opinion-toggle--meh\")) {\n      $alignment.val(0);\n    } else if ($btn.is(\".opinion-toggle--ko\")) {\n      $alignment.val(-1);\n    }\n\n    // Announce the selected state for the screen reader\n    $selectedState.text($btn.data(\"selected-label\"));\n  }\n\n  /**\n   * Event listener for the comment field text input.\n   * @private\n   * @param {Event} ev - The event object.\n   * @returns {Void} - Returns nothing\n   */\n  _onTextInput(ev) {\n    const $text = $(ev.target);\n    const $add = $text.closest(\".add-comment\");\n    const $form = $(\"form\", $add);\n    const $submit = $(\"button[type='submit']\", $form);\n\n    if ($text.val().length > 0) {\n      $submit.removeAttr(\"disabled\");\n    } else {\n      $submit.attr(\"disabled\", \"disabled\");\n    }\n  }\n}\n","import {EmojiButton} from \"@joeattardi/emoji-button\";\n\n// eslint-disable-next-line require-jsdoc\nexport default function addInputEmoji() {\n  const containers = document.querySelectorAll(\"[data-input-emoji]\");\n\n  if (containers.length) {\n    containers.forEach((elem) => {\n      const picker = new EmojiButton({\n        position: \"bottom-end\",\n        rootElement: elem.closest(\"form\")?.parentElement || document.body,\n        zIndex: 2000\n      });\n\n      // if the selector is inside a modal window\n      // this allows shows the emoji menu uncut\n      const reveal = elem.closest(\"[data-reveal]\")\n      if (reveal) {\n        reveal.style.overflowY = \"unset\"\n      }\n\n      const wrapper = document.createElement(\"div\");\n      wrapper.className = \"emoji__container\"\n      const btnContainer = document.createElement(\"div\");\n      btnContainer.className = \"emoji__trigger\"\n      const btn = document.createElement(\"div\");\n      btn.className = \"emoji__button\"\n      btn.innerHTML = '<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"smile\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 496 512\"><path fill=\"currentColor\" d=\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm4 72.6c-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.7-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8-10.1-8.4-25.3-7.1-33.8 3.1z\"></path></svg>'\n\n      const parent = elem.parentNode;\n      parent.insertBefore(wrapper, elem);\n      wrapper.appendChild(elem);\n      wrapper.appendChild(btnContainer);\n      btnContainer.appendChild(btn);\n\n      // The form errors need to be in the same container with the field they\n      // belong to for Foundation Abide to show them automatically.\n      parent.querySelectorAll(\".form-error\").forEach((el) => wrapper.appendChild(el));\n\n      let handlerPicker = function () {\n        picker.togglePicker(btnContainer);\n      }\n\n      btnContainer.addEventListener(\"click\", handlerPicker);\n\n      elem.addEventListener(\"characterCounter\", (event) => {\n        if (event.detail.remaining >= 4) {\n          btnContainer.addEventListener(\"click\", handlerPicker);\n          btnContainer.removeAttribute(\"style\");\n        } else {\n          btnContainer.removeEventListener(\"click\", handlerPicker);\n          btnContainer.setAttribute(\"style\", \"color:lightgrey\");\n        }\n      });\n\n\n      picker.on(\"emoji\", ({emoji}) => {\n        elem.value += ` ${emoji} `\n\n        const event = new Event(\"emoji.added\");\n        elem.dispatchEvent(event);\n      });\n    })\n  }\n};\n","/**\n * A method to enable the dialog mode for the given dialog(s).\n *\n * This should be called when the dialog is opened. It implements two things for\n * the dialog:\n * 1. It places the focus to the title element making sure the screen reader\n *    focuses in the correct position of the document. Otherwise some screen\n *    readers continue reading outside of the document.\n * 2. Document \"tab guards\" that force the keyboard focus within the modal when\n *    the user is using keyboard or keyboard emulating devices for browsing the\n *    document.\n *\n * The \"tab guards\" are added at the top and bottom of the document to keep the\n * user's focus within the dialog if they accidentally or intentionally place\n * the focus outside of the document, e.g. in different window or in the browser\n * address bar. They guard the focus on both sides of the document returning\n * focus back to the first or last focusable element within the dialog.\n *\n * @param {jQuery} $dialogs The jQuery element(s) to apply the mode for.\n * @return {Void} Nothing\n */\nexport default ($dialogs) => {\n  $dialogs.each((_i, dialog) => {\n    const $dialog = $(dialog);\n\n    const $container = $(\"body\");\n    const $title = $(\".reveal__title:first\", $dialog);\n\n    if ($title.length > 0) {\n      // Focus on the title to make the screen reader to start reading the\n      // content within the modal.\n      $title.attr(\"tabindex\", $title.attr(\"tabindex\") || -1);\n      $title.trigger(\"focus\");\n    }\n\n    // Once the final modal closes, disable the focus guarding\n    $dialog.off(\"closed.zf.reveal.focusguard\").on(\"closed.zf.reveal.focusguard\", () => {\n      $dialog.off(\"closed.zf.reveal.focusguard\");\n\n      // After the last dialog is closed, the tab guards should be removed.\n      // This is done when the focus guard is disabled. If there is still a\n      // visible reveal item in the DOM, make that the currently \"guarded\"\n      // element. Note that there may be multiple dialogs open on top of each\n      // other at the same time.\n      const $visibleReveal = $(\".reveal:visible:last\", $container);\n      if ($visibleReveal.length > 0) {\n        window.focusGuard.trap($visibleReveal[0]);\n      } else {\n        window.focusGuard.disable();\n      }\n    });\n\n    window.focusGuard.trap(dialog);\n  });\n};\n","import { Keyboard } from \"foundation-sites\"\n\nconst focusGuardClass = \"focusguard\";\nconst focusableNodes = [\"A\", \"IFRAME\", \"OBJECT\", \"EMBED\"];\nconst focusableDisableableNodes = [\"BUTTON\", \"INPUT\", \"TEXTAREA\", \"SELECT\"];\n\nexport default class FocusGuard {\n  constructor(container) {\n    this.container = container;\n    this.guardedElement = null;\n  }\n\n  trap(element) {\n    if (this.guardedElement) {\n      Keyboard.releaseFocus($(this.guardedElement));\n    }\n\n    this.enable();\n    this.guardedElement = element;\n\n    // Call the release focus first so that we don't accidentally add the\n    // keyboard trap twice. Note that the Foundation methods expect the elements\n    // to be jQuery elements which is why we pass them through jQuery.\n    Keyboard.releaseFocus($(element));\n    Keyboard.trapFocus($(element));\n  }\n\n  enable() {\n    // Check if the guards already exists due to some other dialog\n    const guards = this.container.querySelectorAll(`:scope > .${focusGuardClass}`);\n    if (guards.length > 0) {\n      // Make sure the guards are the first and last element as there have\n      // been changes in the DOM.\n      guards.forEach((guard) => {\n        if (guard.dataset.position === \"start\") {\n          this.container.prepend(guard);\n        } else {\n          this.container.append(guard);\n        }\n      })\n\n      return;\n    }\n\n    // Add guards at the start and end of the document and attach their focus\n    // listeners\n    const startGuard = this.createFocusGuard(\"start\");\n    const endGuard = this.createFocusGuard(\"end\");\n\n    this.container.prepend(startGuard);\n    this.container.append(endGuard);\n\n    startGuard.addEventListener(\"focus\", () => this.handleContainerFocus(startGuard));\n    endGuard.addEventListener(\"focus\", () => this.handleContainerFocus(endGuard));\n  }\n\n  disable() {\n    const guards = this.container.querySelectorAll(`:scope > .${focusGuardClass}`);\n    guards.forEach((guard) => guard.remove());\n\n    if (this.guardedElement) {\n      // Note that the Foundation methods expect the elements to be jQuery\n      // elements which is why we pass them through jQuery.\n      Keyboard.releaseFocus($(this.guardedElement));\n      this.guardedElement = null;\n    }\n  }\n\n  createFocusGuard(position) {\n    const guard = document.createElement(\"div\");\n    guard.className = focusGuardClass;\n    guard.dataset.position = position;\n    guard.tabIndex = 0;\n    guard.setAttribute(\"aria-hidden\", \"true\");\n\n    return guard;\n  };\n\n  handleContainerFocus(guard) {\n    if (!this.guardedElement) {\n      guard.blur();\n      return;\n    }\n\n    const visibleNodes = Array.from(this.guardedElement.querySelectorAll(\"*\")).filter((item) => {\n      return this.isVisible(item);\n    });\n\n    let target = null;\n    if (guard.dataset.position === \"start\") {\n      // Focus at the start guard, so focus the first focusable element after that\n      for (let ind = 0; ind < visibleNodes.length; ind += 1) {\n        if (!this.isFocusGuard(visibleNodes[ind]) && this.isFocusable(visibleNodes[ind])) {\n          target = visibleNodes[ind];\n          break;\n        }\n      }\n    } else {\n      // Focus at the end guard, so focus the first focusable element after that\n      for (let ind = visibleNodes.length - 1; ind >= 0; ind -= 1) {\n        if (!this.isFocusGuard(visibleNodes[ind]) && this.isFocusable(visibleNodes[ind])) {\n          target = visibleNodes[ind];\n          break;\n        }\n      }\n    }\n\n    if (target) {\n      target.focus();\n    } else {\n      // If no focusable element was found, blur the guard focus\n      guard.blur();\n    }\n  };\n\n  isVisible(element) {\n    return element.offsetWidth > 0 || element.offsetHeight > 0;\n  }\n\n  isFocusGuard(element) {\n    return element.classList.contains(focusGuardClass);\n  }\n\n  isFocusable(element) {\n    if (focusableNodes.indexOf(element.nodeName) > -1) {\n      return true;\n    }\n    if (focusableDisableableNodes.indexOf(element.nodeName) > -1 || element.getAttribute(\"contenteditable\")) {\n      if (element.getAttribute(\"disabled\")) {\n        return false;\n      }\n      return true;\n    }\n\n    const tabindex = parseInt(element.getAttribute(\"tabindex\"), 10);\n    if (!isNaN(tabindex) && tabindex >= 0) {\n      return true;\n    }\n\n    return false;\n  }\n}\n","/* eslint-disable no-invalid-this */\n\nimport svg4everybody from \"svg4everybody\"\nimport formDatePicker from \"src/decidim/form_datepicker\"\nimport fixDropdownMenus from \"src/decidim/dropdowns_menus\"\nimport createQuillEditor from \"src/decidim/editor\"\nimport Configuration from \"src/decidim/configuration\"\nimport ExternalLink from \"src/decidim/external_link\"\nimport updateExternalDomainLinks from \"src/decidim/external_domain_warning\"\nimport InputCharacterCounter from \"src/decidim/input_character_counter\"\nimport FormValidator from \"src/decidim/form_validator\"\nimport CommentsComponent from \"src/decidim/comments/comments.component\"\nimport DataPicker from \"src/decidim/data_picker\"\nimport FormFilterComponent from \"src/decidim/form_filter\"\nimport addInputEmoji from \"src/decidim/input_emoji\"\nimport dialogMode from \"src/decidim/dialog_mode\"\nimport FocusGuard from \"src/decidim/focus_guard\"\nimport backToListLink from \"src/decidim/back_to_list\"\n\nwindow.Decidim = window.Decidim || {};\nwindow.Decidim.config = new Configuration()\nwindow.Decidim.ExternalLink = ExternalLink;\nwindow.Decidim.InputCharacterCounter = InputCharacterCounter;\nwindow.Decidim.FormValidator = FormValidator;\nwindow.Decidim.DataPicker = DataPicker;\nwindow.Decidim.CommentsComponent = CommentsComponent;\nwindow.Decidim.addInputEmoji = addInputEmoji;\n\n$(() => {\n  window.theDataPicker = new DataPicker($(\".data-picker\"));\n  window.focusGuard = new FocusGuard(document.querySelector(\"body\"));\n\n  $(document).foundation();\n  $(document).on(\"open.zf.reveal\", (ev) => {\n    dialogMode($(ev.target));\n  });\n\n  // Trap the focus within the mobile menu if the user enters it. This is an\n  // accessibility feature forcing the focus within the offcanvas container\n  // which holds the mobile menu.\n  $(\"#offCanvas\").on(\"openedEnd.zf.offCanvas\", (ev) => {\n    ev.target.querySelector(\".main-nav a\").focus();\n    window.focusGuard.trap(ev.target);\n  }).on(\"closed.zf.offCanvas\", () => {\n    window.focusGuard.disable();\n  });\n\n  fixDropdownMenus();\n\n  svg4everybody();\n\n  // Prevent data-open buttons e.g. from submitting the underlying form in\n  // authorized action buttons.\n  $(\"[data-open]\").on(\"click\", (event) => {\n    event.preventDefault();\n  });\n\n  formDatePicker();\n\n  $(\".editor-container\").each((_idx, container) => {\n    createQuillEditor(container);\n  });\n\n  $('a[target=\"_blank\"]').each((_i, elem) => {\n    const $link = $(elem);\n    $link.data(\"external-link\", new ExternalLink($link));\n  });\n\n  // Mount comments component\n  $(\"[data-decidim-comments]\").each((_i, el) => {\n    const $el = $(el);\n    const comments = new CommentsComponent($el, $el.data(\"decidim-comments\"));\n    comments.mountComponent();\n    $(el).data(\"comments\", comments);\n  });\n\n  $(\"form.new_filter\").each(function () {\n    const formFilter = new FormFilterComponent($(this));\n\n    formFilter.mountComponent();\n  })\n\n  updateExternalDomainLinks($(\"body\"))\n\n  addInputEmoji()\n\n  backToListLink(document.querySelectorAll(\".js-back-to-list\"));\n});\n","/**\n * Changes \"Back to list\" links to the one saved in sessionStorage API\n * To apply this to a link, at least one element must have the class \"js-back-to-list\".\n * For this to work it needs the filteredParams in SessionStorage, that's saved on FormFilterComponent.\n * @param {NodeList} links - Hyperlinks elements that point to the filters page that will use the fitererd params\n * @returns {void}\n */\nexport default function backToListLink(links) {\n\n  if (!links) {\n    return;\n  }\n\n  if (!window.sessionStorage) {\n    return;\n  }\n\n  const filteredParams = JSON.parse(sessionStorage.getItem(\"filteredParams\")) || {};\n  links.forEach((link) => {\n    const href = link.getAttribute(\"href\");\n    if (filteredParams[href]) {\n      link.setAttribute(\"href\", filteredParams[href]);\n    }\n  });\n\n}\n","import select from \"select\";\n\n/**\n * This provides functionality to add clipboard copy functionality to buttons\n * on the page. The element to be copied from has to be defined for the button\n * using a `data` attribute and the target element has to be a form input.\n *\n * Usage:\n *   1. Create the button:\n *     <button class=\"button\"\n *      data-clipboard-copy=\"#target-input-element\"\n *      data-clipboard-copy-label=\"Copied!\"\n *      data-clipboard-copy-message=\"The text was successfully copied to clipboard.\"\n *      aria-label=\"Copy the text to clipboard\">\n *        <%= icon \"clipboard\", role: \"presentation\", \"aria-hidden\": true %>\n *        Copy to clipboard\n *    </button>\n *\n *   2. Make sure the target element exists on the page:\n *     <input id=\"target-input-element\" type=\"text\" value=\"This text will be copied.\">\n *\n * Options through data attributes:\n * - `data-clipboard-copy` = The jQuery selector for the target input element\n *   where text will be copied from.\n * - `data-clipboard-copy-label` = The label that will be shown in the button\n *   after a succesful copy.\n * - `data-clipboard-copy-message` = The text that will be announced to screen\n *   readers after a successful copy.\n */\n\n// How long the \"copied\" text is shown in the copy element after successful\n// copy.\nconst CLIPBOARD_COPY_TIMEOUT = 5000;\n\n$(() => {\n  $(document).on(\"click\", \"[data-clipboard-copy]\", (ev) => {\n    const $el = $(ev.target);\n    if (!$el.data(\"clipboard-copy\") || $el.data(\"clipboard-copy\").length < 1) {\n      return;\n    }\n\n    const $input = $($el.data(\"clipboard-copy\"));\n    if ($input.length < 1 || !$input.is(\"input, textarea, select\")) {\n      return;\n    }\n\n    // Get the available text to clipboard.\n    const selectedText = select($input[0]);\n    if (!selectedText || selectedText.length < 1) {\n      return;\n    }\n\n    // Move the selected text to clipboard.\n    const $temp = $(`<textarea>${selectedText}</textarea>`).css({\n      width: 1,\n      height: 1\n    });\n    $el.after($temp);\n    $temp.select();\n\n    const copyDone = () => {\n      $temp.remove();\n      $el.focus();\n    };\n    try {\n      // document.execCommand is deprecated but the Clipboard API is not\n      // supported by IE (which unfortunately is still a thing).\n      if (!document.execCommand(\"copy\")) {\n        return;\n      }\n    } catch (err) {\n      copyDone();\n      return;\n    }\n    copyDone();\n\n    // Change the label to indicate the copying was successful.\n    const label = $el.data(\"clipboard-copy-label\");\n    if (label) {\n      let to = $el.data(\"clipboard-copy-label-timeout\");\n      if (to) {\n        clearTimeout(to);\n      }\n\n      if (!$el.data(\"clipboard-copy-label-original\")) {\n        $el.data(\"clipboard-copy-label-original\", $el.html());\n      }\n\n      $el.html(label);\n      to = setTimeout(() => {\n        $el.html($el.data(\"clipboard-copy-label-original\"));\n        $el.removeData(\"clipboard-copy-label-original\");\n        $el.removeData(\"clipboard-copy-label-timeout\");\n      }, CLIPBOARD_COPY_TIMEOUT);\n      $el.data(\"clipboard-copy-label-timeout\", to)\n    }\n\n    // Alert the screen reader what just happened (the link was copied).\n    let message = $el.data(\"clipboard-copy-message\");\n    if (message) {\n      let $msg = $el.data(\"clipboard-message-element\");\n      if ($msg) {\n        if ($msg.html() === message) {\n          // Try to hint the screen reader to re-read the text in the message\n          // element.\n          message += \"&nbsp;\";\n        }\n      } else {\n        $msg = $('<div aria-role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"clipboard-announcement show-for-sr\"></div>');\n        $el.after($msg);\n        $el.data(\"clipboard-message-element\", $msg);\n      }\n\n      // Add the non breaking space always to content to try to force the\n      // screen reader to reannounce the added text.\n      $msg.html(message);\n    }\n  });\n});\n","import \"@zeitiger/appendaround\"\n\n$(() => {\n  let $appendableElements = $(\".js-append\");\n  $appendableElements.appendAround();\n})\n","import Rails from \"@rails/ujs\";\n\n// Make the remote form submit buttons disabled when the form is being\n// submitted to avoid multiple submits.\ndocument.addEventListener(\"ajax:beforeSend\", (ev) => {\n  if (!ev.target.matches(\"form[data-remote]\")) {\n    return;\n  }\n\n  ev.target.querySelectorAll(\"[type=submit]\").forEach((submit) => {\n    submit.disabled = true;\n  });\n});\ndocument.addEventListener(\"ajax:complete\", (ev) => {\n  if (!ev.target.matches(\"form[data-remote]\")) {\n    return;\n  }\n\n  ev.target.querySelectorAll(\"[type=submit]\").forEach((submit) => {\n    submit.disabled = false;\n  });\n});\n\n// The forms that are attached to Foundation Abide do not work properly with\n// Rails UJS Ajax forms that have the `data-remote` attribute attached to\n// them. The reason is that in case Foundation Abide sees the form as valid,\n// it will submit it normally bypassing the Rails UJS functionality.\n// The submit events happens through jQuery in Foundation Abide which is why\n// we need to bind the event with jQuery.\n$(document).on(\"submit\", \"form[data-remote][data-abide]\", (ev) => {\n  ev.preventDefault();\n\n  if (ev.target.querySelectorAll(\"[data-invalid]\").length > 0) {\n    return;\n  }\n\n  Reflect.apply(Rails.handleRemote, ev.target, [ev]);\n});\n","/* eslint-disable no-invalid-this */\n\nimport Foundation from \"foundation-sites\"\n\n$(() => {\n  // True if small devices\n  if (!Foundation.MediaQuery.atLeast(\"medium\")) {\n    const $speaker = $(\".js-conference\")\n\n    $speaker.hover(function () {\n      const top = $(window).scrollTop() + ($(window).height() * 0.1)\n      $(this).find(\".js-bio\").css(\"top\", top)\n    })\n  }\n});\n","import { pushState, registerCallback } from \"src/decidim/history\"\n\nconst initializeListingOptionsMenu = (options) => {\n  $(document).on(\"click\", `${options.containerSelector} a`, (event) => {\n    const $target = $(event.target);\n\n    $target.parents(\".menu\").find(\"a:first\").text($target.text());\n\n    pushState($target.attr(\"href\"));\n  })\n\n  registerCallback(options.callbackName, () => {\n    const url = window.location.toString();\n    const match = url.match(/${options.urlParameter}=([^&]*)/);\n    const $targetMenu = $(`${options.containerSelector} .menu`);\n    let value = $targetMenu.find(\".menu a:first\").data(options.dataAttribute);\n\n    if (match) {\n      value = match[1];\n    }\n\n    const linkText = $targetMenu.find(`.menu a[data-${options.dataAttribute}=\"${value}\"]`).text();\n\n    $targetMenu.find(\"a:first\").text(linkText);\n  });\n};\n\n$(() => {\n  initializeListingOptionsMenu({\n    containerSelector: \".order-by\",\n    callbackName: \"orders\",\n    urlParameter: \"order\",\n    dataAttribute: \"order\"\n  });\n  initializeListingOptionsMenu({\n    containerSelector: \".results-per-page\",\n    callbackName: \"results_per_page\",\n    urlParameter: \"per_page\",\n    dataAttribute: \"per-page-option\"\n  });\n});\n","import dayjs from \"dayjs\"\n\n$(() => {\n  const $impersonationWarning = $(\".impersonation-warning\");\n  if ($impersonationWarning.length) {\n    const endsAt = dayjs($impersonationWarning.data(\"session-ends-at\"));\n    const exitInterval = setInterval(() => {\n      const diff = (endsAt - dayjs()) / 60000;\n      const diffInMinutes = Math.round(diff);\n      $impersonationWarning.find(\".minutes\").html(diffInMinutes);\n\n      if (diff <= 0) {\n        window.location.reload();\n      }\n    }, 1000);\n\n    // Prevent reload when page is already unloading, otherwise it may cause infinite reloads.\n    window.addEventListener(\"beforeunload\", () => {\n      clearInterval(exitInterval);\n      return;\n    });\n  }\n});\n","import Cookies from \"js-cookie\";\n\nclass ConsentManager {\n  // Options should contain the following keys:\n  // - modal - HTML element of the data consent modal (e.g. \"<div id=\"dc-modal\">Foo bar</div>\")\n  // - categories - Available data consent categories (e.g. [\"essential\", \"preferences\", \"analytics\", \"marketing\"])\n  // - cookieName - Name of the cookie saved in the browser (e.g. \"decidim-consent\")\n  // - warningElement - HTML element to be shown when user has not given the necessary data consent to display the content.\n  constructor(options) {\n    this.modal = options.modal;\n    this.categories = options.categories;\n    this.cookieName = options.cookieName;\n    this.cookie = Cookies.get(this.cookieName);\n    this.warningElement = options.warningElement;\n    if (this.cookie) {\n      this.updateState(JSON.parse(this.cookie));\n    } else {\n      this.updateState({});\n    }\n  }\n\n  updateState(newState) {\n    this.state = newState;\n    Cookies.set(this.cookieName, JSON.stringify(this.state), {\n      domain: document.location.host.split(\":\")[0],\n      sameSite: \"Lax\",\n      expires: 365,\n      secure: window.location.protocol === \"https:\"\n    });\n    this.updateModalSelections();\n    this.triggerState();\n  }\n\n  triggerJavaScripts() {\n    document.querySelectorAll(\"script[type='text/plain'][data-consent]\").forEach((script) => {\n      if (this.state[script.dataset.consent]) {\n        const activeScript = document.createElement(\"script\");\n        if (script.src.length > 0) {\n          activeScript.src = script.src;\n        } else {\n          activeScript.innerHTML = script.innerHTML;\n        }\n        script.parentNode.replaceChild(activeScript, script);\n      }\n    });\n\n    const event = new CustomEvent(\"dataconsent\", { detail: this.state });\n    document.dispatchEvent(event);\n  }\n\n  triggerIframes() {\n    if (this.allAccepted()) {\n      document.querySelectorAll(\".disabled-iframe\").forEach((original) => {\n        if (original.childNodes && original.childNodes.length) {\n          const content = Array.from(original.childNodes).find((childNode) => {\n            return childNode.nodeType === Node.COMMENT_NODE;\n          });\n          if (!content) {\n            return;\n          }\n          const newElement = document.createElement(\"div\");\n          newElement.innerHTML = content.nodeValue;\n          original.parentNode.replaceChild(newElement.firstElementChild, original);\n        }\n      });\n    } else {\n      document.querySelectorAll(\"iframe\").forEach((original) => {\n        const newElement = document.createElement(\"div\");\n        newElement.className = \"disabled-iframe\";\n        newElement.appendChild(document.createComment(`${original.outerHTML}`));\n        original.parentNode.replaceChild(newElement, original);\n      });\n    }\n  }\n\n  triggerWarnings() {\n    document.querySelectorAll(\".disabled-iframe\").forEach((original) => {\n      if (original.querySelector(\".dataconsent-warning\")) {\n        return;\n      }\n\n      let cloned = this.warningElement.cloneNode(true);\n      cloned.classList.remove(\"hide\");\n      original.appendChild(cloned);\n    });\n  }\n\n  triggerState() {\n    this.triggerJavaScripts();\n    this.triggerIframes();\n    this.triggerWarnings();\n  }\n\n  allAccepted() {\n    return this.categories.every((category) => {\n      return this.state[category] === true;\n    });\n  }\n\n  updateModalSelections() {\n    const categoryElements = this.modal.querySelectorAll(\".category-wrapper\");\n\n    categoryElements.forEach((categoryEl) => {\n      const categoryInput = categoryEl.querySelector(\"input\");\n      if (this.state && this.state[categoryInput.name]) {\n        categoryInput.checked = true;\n      } else if (!categoryInput.disabled) {\n        categoryInput.checked = false;\n      }\n    });\n  }\n\n  saveSettings(newState) {\n    this.updateState(newState);\n  }\n\n  acceptAll() {\n    const newState = {};\n    this.categories.forEach((category) => {\n      newState[category] = true;\n    });\n    this.updateState(newState);\n  }\n\n  rejectAll() {\n    this.updateState({\n      essential: true\n    });\n  }\n\n  getState() {\n    return this.state;\n  }\n}\n\nexport default ConsentManager\n","import ConsentManager from \"src/decidim/data_consent/consent_manager\";\n\nconst initDialog = (manager) => {\n  if (Object.keys(manager.state).length > 0) {\n    return;\n  }\n  const dialogWrapper = document.querySelector(\"#dc-dialog-wrapper\");\n  dialogWrapper.classList.remove(\"hide\");\n\n  const acceptAllButton = dialogWrapper.querySelector(\"#dc-dialog-accept\");\n  const rejectAllButton = dialogWrapper.querySelector(\"#dc-dialog-reject\");\n  const settingsButton = dialogWrapper.querySelector(\"#dc-dialog-settings\");\n\n  acceptAllButton.addEventListener(\"click\", () => {\n    manager.acceptAll();\n    dialogWrapper.style.display = \"none\";\n  });\n\n  rejectAllButton.addEventListener(\"click\", () => {\n    manager.rejectAll();\n    dialogWrapper.style.display = \"none\";\n  });\n\n  settingsButton.addEventListener(\"click\", () => {\n    dialogWrapper.style.display = \"none\";\n  });\n}\n\nconst initModal = (manager) => {\n  const categoryElements = manager.modal.querySelectorAll(\".category-wrapper\");\n\n  categoryElements.forEach((categoryEl) => {\n    const categoryButton = categoryEl.querySelector(\".dc-title\");\n    const categoryDescription = categoryEl.querySelector(\".dc-description\");\n    categoryButton.addEventListener(\"click\", () => {\n      const hidden = categoryDescription.classList.contains(\"hide\");\n      if (hidden) {\n        categoryButton.classList.add(\"open\");\n        categoryDescription.classList.remove(\"hide\");\n      } else {\n        categoryButton.classList.remove(\"open\");\n        categoryDescription.classList.add(\"hide\");\n      }\n    })\n  })\n\n  const acceptAllButton = manager.modal.querySelector(\"#dc-modal-accept\");\n  const rejectAllButton = manager.modal.querySelector(\"#dc-modal-reject\");\n  const saveSettingsButton = manager.modal.querySelector(\"#dc-modal-save\");\n\n  acceptAllButton.addEventListener(\"click\", () => {\n    manager.acceptAll();\n  })\n\n  rejectAllButton.addEventListener(\"click\", () => {\n    manager.rejectAll();\n  })\n\n  saveSettingsButton.addEventListener(\"click\", () => {\n    let newState = {};\n    manager.categories.forEach((category) => {\n      const accepted = manager.modal.querySelector(`input[name='${category}']`).checked;\n      if (accepted) {\n        newState[category] = true;\n      }\n    })\n    manager.saveSettings(newState);\n  })\n}\n\nconst initDisabledIframes = (manager) => {\n  const disabledIframes = document.querySelectorAll(\".disabled-iframe\")\n  if (manager.allAccepted()) {\n    disabledIframes.forEach((elem) => {\n      const iframe = document.createElement(\"iframe\")\n      iframe.setAttribute(\"src\", elem.getAttribute(\"src\"));\n      iframe.className = elem.classList.toString();\n      iframe.setAttribute(\"allowfullscreen\", elem.getAttribute(\"allowfullscreen\"));\n      iframe.setAttribute(\"frameborder\", elem.getAttribute(\"frameborder\"));\n      elem.parentElement.appendChild(iframe);\n      elem.remove();\n    })\n  }\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n  const modal = document.querySelector(\"#dc-modal\");\n  if (!modal) {\n    return;\n  }\n\n  const categories = [...modal.querySelectorAll(\".category-wrapper\")].map((el) => el.dataset.id)\n  const manager = new ConsentManager({\n    modal: modal,\n    categories: categories,\n    cookieName: window.Decidim.config.get(\"consent_cookie_name\"),\n    warningElement: document.querySelector(\".dataconsent-warning\")\n  });\n\n  initDisabledIframes(manager);\n  initModal(manager, categories);\n  initDialog(manager);\n});\n","/* eslint no-unused-vars: 0 */\n/* eslint id-length: [\"error\", { \"exceptions\": [\"$\"] }] */\n\nimport $ from \"jquery\"\nimport Quill from \"quill\"\nimport Rails from \"@rails/ujs\"\n\nimport \"core-js/stable\";\nimport \"regenerator-runtime/runtime\";\nimport morphdom from \"morphdom\"\n// Export variable to make it available in .js.erb templates\nwindow.morphdom = morphdom\nimport \"src/decidim/vendor/foundation-datepicker\"\nimport \"src/decidim/foundation_datepicker_locales\"\nimport \"src/decidim/vendor/modernizr\"\nimport \"src/decidim/vendor/social-share-button\"\n\nimport \"src/decidim/input_tags\"\nimport \"src/decidim/input_hashtags\"\nimport \"src/decidim/input_mentions\"\nimport \"src/decidim/input_multiple_mentions\"\nimport \"src/decidim/input_character_counter\"\nimport \"src/decidim/input_autojump\"\nimport \"src/decidim/index\"\nimport \"src/decidim/history\"\nimport \"src/decidim/callout\"\nimport \"src/decidim/clipboard\"\nimport \"src/decidim/append_elements\"\nimport \"src/decidim/user_registrations\"\nimport \"src/decidim/account_form\"\nimport \"src/decidim/data_picker\"\nimport \"src/decidim/dropdowns_menus\"\nimport \"src/decidim/append_redirect_url_to_modals\"\nimport \"src/decidim/form_attachments\"\nimport \"src/decidim/form_validator\"\nimport \"src/decidim/form_remote\"\nimport \"src/decidim/ajax_modals\"\nimport \"src/decidim/conferences\"\nimport \"src/decidim/tooltip_keep_on_hover\"\nimport \"src/decidim/diff_mode_dropdown\"\nimport \"src/decidim/conversations\"\nimport \"src/decidim/delayed\"\nimport \"src/decidim/icon\"\nimport \"src/decidim/vizzs\"\nimport \"src/decidim/responsive_horizontal_tabs\"\nimport \"src/decidim/security/selfxss_warning\"\nimport \"src/decidim/session_timeouter\"\nimport \"src/decidim/configuration\"\nimport \"src/decidim/floating_help\"\nimport \"src/decidim/confirm\"\nimport \"src/decidim/comments/comments\"\nimport \"src/decidim/results_listing\"\nimport \"src/decidim/represent_user_group\"\nimport \"src/decidim/impersonation\"\nimport \"src/decidim/start_conversation_dialog\"\nimport \"src/decidim/notifications\"\nimport \"src/decidim/identity_selector_dialog\"\nimport \"src/decidim/gallery\"\nimport \"src/decidim/direct_uploads/upload_field\"\nimport \"src/decidim/back_to_list\"\nimport \"src/decidim/data_consent\"\n\n// CSS\nimport \"entrypoints/decidim_core.scss\"\n\n// Import from the Rails instance application\nimport \"src/decidim/decidim_application\"\n\n// Images\nrequire.context(\"../images\", true)\n\n// This needs to be loaded after confirm dialog to bind properly\nRails.start()\n","/**\n * Initializes the edit account form to control the password field elements\n * which should only be required when they are visible.\n *\n * @returns {void}\n */\nconst initializeAccountForm = () => {\n  const editUserForm = document.querySelector(\"form.edit_user\");\n  if (!editUserForm) {\n    return;\n  }\n\n  const passwordChange = editUserForm.querySelector(\"#passwordChange\");\n  if (!passwordChange) {\n    return;\n  }\n\n  const passwordFields = passwordChange.querySelectorAll(\"input[type='password']\");\n  if (passwordFields.length < 1) {\n    return;\n  }\n\n  // Foundation uses jQuery so these have to be bound using jQuery and the\n  // attribute value needs to be set through jQuery.\n  const togglePasswordFieldValidators = (enabled) => {\n    $(passwordFields).attr(\"required\", enabled);\n\n    if (!enabled) {\n      passwordFields.forEach((field) => (field.value = \"\"));\n    }\n  }\n\n  $(passwordChange).on(\"on.zf.toggler\", () => {\n    togglePasswordFieldValidators(true);\n  });\n  $(passwordChange).on(\"off.zf.toggler\", () => {\n    togglePasswordFieldValidators(false);\n  });\n  togglePasswordFieldValidators(false);\n};\n\n/**\n * Since the delete account has a modal to confirm it we need to copy the content of the\n * reason field to the hidden field in the form inside the modal.\n *\n * @return {void}\n */\nconst initializeDeleteAccount = () => {\n  const $deleteAccountForm = $(\".delete-account\");\n  const $deleteAccountModalForm = $(\".delete-account-modal\");\n\n  if ($deleteAccountForm.length < 1) {\n    return;\n  }\n\n  const $openModalButton = $(\".open-modal-button\");\n  const $modal = $(\"#deleteConfirm\");\n\n  $openModalButton.on(\"click\", (event) => {\n    try {\n      const reasonValue = $deleteAccountForm.find(\"textarea#delete_account_delete_reason\").val();\n      $deleteAccountModalForm.find(\"input#delete_account_delete_reason\").val(reasonValue);\n      $modal.foundation(\"open\");\n    } catch (error) {\n      console.error(error); // eslint-disable-line no-console\n    }\n\n    event.preventDefault();\n    event.stopPropagation();\n    return false;\n  });\n};\n\n$(() => {\n  initializeAccountForm();\n  initializeDeleteAccount();\n});\n","/* eslint-disable multiline-ternary, no-ternary */\n\n/*\n *\n * This is used to make sure users are redirected to\n * the expected URL after sign in.\n *\n * When a button or link trigger a login modal we capture\n * the event and inject the URL where the user should\n * be redirected after sign in (the redirect_url param).\n *\n * The code is injected to any form or link in the modal\n * and when the modal is closed we remove the injected\n * code.\n *\n * In order for this to work the button or link must have\n * a data-open attribute with the ID of the modal to open\n * and a data-redirect-url attribute with the URL to redirect\n * the user. If any of this is missing no code will be\n * injected.\n *\n */\n$(() => {\n  const removeUrlParameter = (url, parameter) => {\n    const urlParts = url.split(\"?\");\n\n    if (urlParts.length >= 2) {\n      // Get first part, and remove from array\n      const urlBase = urlParts.shift();\n\n      // Join it back up\n      const queryString = urlParts.join(\"?\");\n\n      const prefix = `${encodeURIComponent(parameter)}=`;\n      const parts = queryString.split(/[&;]/g);\n\n      // Reverse iteration as may be destructive\n      for (let index = parts.length - 1; index >= 0; index -= 1) {\n        // Idiom for string.startsWith\n        if (parts[index].lastIndexOf(prefix, 0) !== -1) {\n          parts.splice(index, 1);\n        }\n      }\n\n      if (parts.length === 0) {\n        return urlBase;\n      }\n\n      return `${urlBase}?${parts.join(\"&\")}`;\n    }\n\n    return url;\n  }\n\n  $(document).on(\"click.zf.trigger\", (event) => {\n    const target = `#${$(event.target).data(\"open\")}`;\n    const redirectUrl = $(event.target).data(\"redirectUrl\");\n\n    if (target && redirectUrl) {\n      $(\"<input type='hidden' />\").\n        attr(\"id\", \"redirect_url\").\n        attr(\"name\", \"redirect_url\").\n        attr(\"value\", redirectUrl).\n        appendTo(`${target} form`);\n\n      $(`${target} a`).attr(\"href\", (index, href) => {\n        const querystring = jQuery.param({\"redirect_url\": redirectUrl});\n        return href + (href.match(/\\?/) ? \"&\" : \"?\") + querystring;\n      });\n    }\n  });\n\n  $(document).on(\"closed.zf.reveal\", (event) => {\n    $(\"#redirect_url\", event.target).remove();\n    $(\"a\", event.target).attr(\"href\", (index, href) => {\n      if (href && href.indexOf(\"redirect_url\") !== -1) {\n        return removeUrlParameter(href, \"redirect_url\");\n      }\n\n      return href;\n    });\n  });\n});\n","/**\n * Improves the accessibility of the callout messages for screen readers. Not\n * all screen readers would announce the callout alert contents after the page\n * reload without this.\n */\n\n$(() => {\n  const $callout = $('.callout[role=\"alert\"]:first');\n  if ($callout.length > 0) {\n    setTimeout(() => {\n      // The content insertion is to try to hint some of the screen readers\n      // that the alert content has changed and needs to be announced.\n      $callout.attr(\"tabindex\", \"0\").focus().html(`${$callout.html()}&nbsp;`);\n    }, 500);\n  }\n});\n","/**\n * Scroll smoothly to the last message automatically when the page is fully loaded.\n * To apply this to a page, at least one element must have the class \"scroll-to-last-message\".\n * @returns {void}\n */\nconst scrollToLastMessage = function() {\n  if ($(\".scroll-to-last-message\").length > 0) {\n    window.scrollTo({\n      top: $(\".conversation-chat:last-child\").offset().top,\n      behavior: \"smooth\"\n    });\n  }\n}\n\n$(document).ready(() => {\n  scrollToLastMessage();\n});\n","$(() => {\n  const $allDiffViews = $(\".row.diff_view\");\n\n  $(document).on(\"click\", \".diff-view-by a.diff-view-mode\", (event) => {\n    event.preventDefault();\n    const $target = $(event.target)\n    let type = \"escaped\";\n    const $selected = $target.parents(\".is-dropdown-submenu-parent\").find(\"#diff-view-selected\");\n    if ($selected.text().trim() === $target.text().trim()) {\n      return;\n    }\n\n    $selected.text($target.text());\n\n    if ($target.attr(\"id\") === \"diff-view-unified\") {\n      if ($(\".row.diff_view_split_escaped\").hasClass(\"hide\")) {\n        type = \"unescaped\";\n      }\n\n      $allDiffViews.addClass(\"hide\");\n      $(`.row.diff_view_unified_${type}`).removeClass(\"hide\");\n    }\n    if ($target.attr(\"id\") === \"diff-view-split\") {\n      if ($(\".row.diff_view_unified_escaped\").hasClass(\"hide\")) {\n        type = \"unescaped\";\n      }\n\n      $allDiffViews.addClass(\"hide\");\n      $(`.row.diff_view_split_${type}`).removeClass(\"hide\");\n    }\n  })\n\n  $(document).on(\"click\", \".diff-view-by a.diff-view-html\", (event) => {\n    event.preventDefault();\n    const $target = $(event.target);\n    $target.parents(\".is-dropdown-submenu-parent\").find(\"#diff-view-html-selected\").text($target.text());\n    const $visibleDiffViewsId = $allDiffViews.not(\".hide\").first().attr(\"id\").split(\"_\").slice(1, -1).join(\"_\");\n    const $visibleDiffViews = $allDiffViews.filter(`[id*=${$visibleDiffViewsId}]`)\n\n    if ($target.attr(\"id\") === \"diff-view-escaped-html\") {\n      $visibleDiffViews.filter(\"[id$=_unescaped]\").addClass(\"hide\");\n      $visibleDiffViews.filter(\"[id$=_escaped]\").removeClass(\"hide\");\n    }\n    if ($target.attr(\"id\") === \"diff-view-unescaped-html\") {\n      $visibleDiffViews.filter(\"[id$=_escaped]\").addClass(\"hide\");\n      $visibleDiffViews.filter(\"[id$=_unescaped]\").removeClass(\"hide\");\n    }\n  })\n});\n","$(function() {\n  if (!window.localStorage) {\n    return;\n  }\n\n  let getDismissedHelpers = () => {\n    let serialized = localStorage.getItem(\"dismissedHelpers\");\n    if (!serialized) {\n      return [];\n    }\n\n    return serialized.split(\",\");\n  };\n\n  let addDismissedHelper = (id) => {\n    let dismissedHelpers = getDismissedHelpers();\n\n    if (!dismissedHelpers.includes(id)) {\n      localStorage.setItem(\n        \"dismissedHelpers\",\n        [...dismissedHelpers, id].join(\",\")\n      );\n    }\n  };\n\n  let dismissedHelpers = getDismissedHelpers();\n\n  $(\".floating-helper-container\").each((_index, elem) => {\n    let id = $(elem).data(\"help-id\");\n\n    $(\n      \".floating-helper__trigger, .floating-helper__content-close\",\n      elem\n    ).on(\"click\", (ev) => {\n      ev.preventDefault();\n    });\n\n    if (!dismissedHelpers.includes(id)) {\n      $(\".floating-helper\", elem).foundation(\"toggle\");\n      $(\".floating-helper__wrapper\", elem).foundation(\"toggle\");\n\n      $(\".floating-helper\", elem).on(\"off.zf.toggler\", () => {\n        addDismissedHelper(id);\n      });\n    }\n  });\n});\n","$(() => {\n  $(\"form .attachments_container\").on(\"closed.zf.callout\", (event) => {\n    $(event.target).remove();\n  });\n});\n","/* eslint-disable require-jsdoc */\n/* eslint-disable no-prototype-builtins, no-restricted-syntax, no-param-reassign */\n\nlet callbacks = {};\n\nexport default function registerCallback(callbackId, callback) {\n  callbacks[callbackId] = callback;\n}\n\nconst unregisterCallback = (callbackId) => {\n  callbacks[callbackId] = null;\n}\n\nconst pushState = (url, state = null) => {\n  if (window.history) {\n    window.history.pushState(state, null, url);\n  }\n};\n\nconst replaceState = (url, state = null) => {\n  if (window.history) {\n    window.history.replaceState(state, null,  url);\n  }\n};\n\nconst state = () => {\n  if (window.history) {\n    return window.history.state;\n  }\n  return null;\n};\n\nwindow.onpopstate = (event) => {\n  // Ensure the event is caused by user action\n  if (event.isTrusted) {\n    for (let callbackId in callbacks) {\n      if (callbacks.hasOwnProperty(callbackId)) {\n        callbacks[callbackId](event.state);\n      }\n    }\n  }\n}\n\nexport { registerCallback, unregisterCallback, pushState, replaceState, state };\n","/**\n * Makes the #select-identity-button to open a popup for the user to\n * select with which identity they want to perform an action.\n *\n */\n$(() => {\n  let button = $(\"#select-identity-button\"),\n      identitiesUrl = null,\n      userIdentitiesDialog = $(\"#user-identities\");\n\n  if (userIdentitiesDialog.length) {\n    identitiesUrl = userIdentitiesDialog.data(\"reveal-identities-url\");\n\n    button.click(function () {\n      $.ajax(identitiesUrl).done(function(response) {\n        userIdentitiesDialog.html(response).foundation(\"open\");\n        button.trigger(\"ajax:success\")\n      });\n    });\n  }\n});\n\n\n/**\n * Manage the identity selector for endorsements.\n *\n */\n$(() => {\n  $(\"#select-identity-button\").on(\"ajax:success\", function() {\n    // once reveal popup has been rendered register event callbacks\n    $(\"#user-identities ul.reveal__list li\").each(function(index, elem) {\n      let liTag = $(elem)\n      liTag.on(\"click\", function() {\n        let method = liTag.data(\"method\"),\n            urlDataAttr = null;\n        if (method === \"POST\") {\n          urlDataAttr = \"create_url\";\n        } else {\n          urlDataAttr = \"destroy_url\";\n        }\n        $.ajax({\n          url: liTag.data(urlDataAttr),\n          method: method,\n          dataType: \"script\",\n          success: function() {\n            if (liTag.hasClass(\"selected\")) {\n              liTag.removeClass(\"selected\")\n              liTag.find(\".icon--circle-check\").addClass(\"invisible\")\n              liTag.data(\"method\", \"POST\")\n            } else {\n              liTag.addClass(\"selected\")\n              liTag.find(\".icon--circle-check\").removeClass(\"invisible\")\n              liTag.data(\"method\", \"DELETE\")\n            }\n          }\n        })\n      })\n    });\n  });\n})\n","$(() => {\n  const $inputs = $(\"input[data-autojump]\");\n  const DELETE_KEY_CODE = 8;\n\n  // Initialize\n  $inputs.on(\"keydown\", (event) => {\n    // Don't do anything if there is selected text\n    if (event.target.selectionStart !== event.target.selectionEnd) {\n      return;\n    }\n\n    if (event.originalEvent.key.length === 1 && event.target.dataset.jumpNext) {\n      if (\n        event.target.value.length ===\n        parseInt(event.target.dataset.maxLength, 10)\n      ) {\n        event.preventDefault();\n        setTimeout(() => {\n          const next = $(event.target.dataset.jumpNext);\n          next.val(event.originalEvent.key);\n          next.trigger(\"focus\");\n        }, 1);\n      }\n    } else if (\n      event.originalEvent.keyCode === DELETE_KEY_CODE &&\n      event.target.dataset.jumpPrev\n    ) {\n      if (event.target.value.length === 0) {\n        event.preventDefault();\n        setTimeout(() => {\n          const prev = $(event.target.dataset.jumpPrev);\n          prev.val(prev.val().slice(0, -1));\n          prev.trigger(\"focus\");\n        }, 1);\n      }\n    }\n  });\n});\n","$(() => {\n  const $notificationsBellIcon = $(\".title-bar .topbar__notifications\");\n  const $wrapper = $(\".wrapper\");\n  const $section = $wrapper.find(\"#notifications\");\n  const $noNotificationsText = $(\".empty-notifications\");\n  const $pagination = $wrapper.find(\"ul.pagination\");\n  const FADEOUT_TIME = 500;\n\n  const anyNotifications = () => $wrapper.find(\".card--widget\").length > 0;\n  const emptyNotifications = () => {\n    if (!anyNotifications()) {\n      $section.remove();\n      $noNotificationsText.removeClass(\"hide\");\n    }\n  };\n\n  $section.on(\"click\", \".mark-as-read-button\", (event) => {\n    const $item = $(event.target).parents(\".card--widget\");\n    $item.fadeOut(FADEOUT_TIME, () => {\n      $item.remove();\n      emptyNotifications();\n    });\n  });\n\n  $wrapper.on(\"click\", \".mark-all-as-read-button\", () => {\n    $section.fadeOut(FADEOUT_TIME, () => {\n      $pagination.remove();\n      $notificationsBellIcon.removeClass(\"is-active\");\n      $wrapper.find(\".card--widget\").remove();\n      emptyNotifications();\n    });\n  });\n\n  emptyNotifications();\n});\n","$(() => {\n  const $checkbox = $(\".represent-user-group\").find(\"input#user_group\");\n  const $userGroupFields = $(\".user-group-fields\");\n\n  $checkbox.click(() => {\n    const $select = $userGroupFields.find(\"select\");\n\n    if (!$select.val()) {\n      $userGroupFields.toggle();\n    }\n\n    if ($userGroupFields.is(\":visible\")) {\n      $checkbox.prop(\"checked\", true);\n    } else {\n      $checkbox.prop(\"checked\", false);\n    }\n  });\n});\n","$(() => {\n  const $responsiveTabBlock = $(\".responsive-tab-block\");\n\n  $responsiveTabBlock.click((event) => {\n    if (event.target.closest(\".is-active\") !== null) {\n      event.preventDefault();\n      if (window.innerWidth <= 639) {\n        $responsiveTabBlock.toggleClass(\"expanded\");\n      }\n    }\n  });\n});\n","/* eslint-disable no-console, no-process-env, no-undef */\n\n$(() => {\n  if (!console) {\n    return;\n  }\n\n  if (process.env.NODE_ENV === \"development\") {\n    return;\n  }\n\n  const allMessages = window.Decidim.config.get(\"messages\");\n  if (!allMessages) {\n    return;\n  }\n  const messages = allMessages.selfxssWarning;\n\n  console.log(`%c${messages.title}`, \"color:#f00;font-weight:bold;font-size:50px;\");\n  console.log(`%c${messages.description}`, \"font-size:24px;\");\n});\n","$(() => {\n  let addUsersConversationDialog = $(\"#user-conversations-add-modal\"),\n      button = $(\"#start-conversation-dialog-button\");\n\n  /* eslint no-unused-vars: 0 */\n  if (addUsersConversationDialog.length) {\n    let refreshUrl = addUsersConversationDialog.data(\"refresh-url\");\n\n    button.click(function () {\n      addUsersConversationDialog.foundation(\"open\");\n    });\n  }\n});\n","/* eslint-disable no-invalid-this */\n\n$(() => {\n\n  // Foundation requires plugins to be initializated\n  setTimeout(function() {\n\n    const $tooltips = $(\".tooltip\")\n\n    $tooltips.\n      on(\"mouseover\", function() {\n        $(`[data-keep-on-hover='true'][data-toggle='${this.id}']`).foundation(\"show\");\n      }).\n      on(\"mouseout\", function() {\n        $(`[data-keep-on-hover='true'][data-toggle='${this.id}']`).foundation(\"hide\");\n      })\n  }, 0);\n});\n","/* eslint-disable */\n\n/*! modernizr 3.3.1 (Custom Build) | MIT *\n * https://modernizr.com/download/?-setclasses !*/\n!function(n,e,s){function o(n,e){return typeof n===e}function a(){var n,e,s,a,i,l,r;for(var c in f)if(f.hasOwnProperty(c)){if(n=[],e=f[c],e.name&&(n.push(e.name.toLowerCase()),e.options&&e.options.aliases&&e.options.aliases.length))for(s=0;s<e.options.aliases.length;s++)n.push(e.options.aliases[s].toLowerCase());for(a=o(e.fn,\"function\")?e.fn():e.fn,i=0;i<n.length;i++)l=n[i],r=l.split(\".\"),1===r.length?Modernizr[r[0]]=a:(!Modernizr[r[0]]||Modernizr[r[0]]instanceof Boolean||(Modernizr[r[0]]=new Boolean(Modernizr[r[0]])),Modernizr[r[0]][r[1]]=a),t.push((a?\"\":\"no-\")+r.join(\"-\"))}}function i(n){var e=r.className,s=Modernizr._config.classPrefix||\"\";if(c&&(e=e.baseVal),Modernizr._config.enableJSClass){var o=new RegExp(\"(^|\\\\s)\"+s+\"no-js(\\\\s|$)\");e=e.replace(o,\"$1\"+s+\"js$2\")}Modernizr._config.enableClasses&&(e+=\" \"+s+n.join(\" \"+s),c?r.className.baseVal=e:r.className=e)}var t=[],f=[],l={_version:\"3.3.1\",_config:{classPrefix:\"\",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(n,e){var s=this;setTimeout(function(){e(s[n])},0)},addTest:function(n,e,s){f.push({name:n,fn:e,options:s})},addAsyncTest:function(n){f.push({name:null,fn:n})}},Modernizr=function(){};Modernizr.prototype=l,Modernizr=new Modernizr;var r=e.documentElement,c=\"svg\"===r.nodeName.toLowerCase();a(),i(t),delete l.addTest,delete l.addAsyncTest;for(var u=0;u<Modernizr._q.length;u++)Modernizr._q[u]();n.Modernizr=Modernizr}(window,document);\n","/* eslint-disable complexity, default-case, no-param-reassign, consistent-return */\n\n/*\n *\n * Social Share Button\n *\n * Copyright (c) <2012> <Jason Lee> - The MIT license\n * Originally copied fom https://github.com/huacnlee/social-share-button\n * Transformed from Coffescript to Javascipt with decaffeintate\n *\n * We've copied itlocally so it works with webpacker\n *\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * DS205: Consider reworking code to avoid use of IIFEs\n * DS207: Consider shorter variations of null checks\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\nwindow.SocialShareButton = {\n  openUrl(url, width, height) {\n    if (width === null) {\n      width = 640;\n    }\n    if (height === null) {\n      height = 480;\n    }\n    const left = (screen.width / 2) - (width / 2);\n    const top = (screen.height * 0.3) - (height / 2);\n    const opt = `width=${width},height=${height},left=${left},top=${top},menubar=no,status=no,location=no`;\n    window.open(url, \"popup\", opt);\n    return false;\n  },\n\n  share(el) {\n    if (el.getAttribute === null) {\n      el = document.querySelector(el);\n    }\n\n    const site = el.getAttribute(\"data-site\");\n    const appkey = el.getAttribute(\"data-appkey\") || \"\";\n    const $parent = el.parentNode;\n    let title = encodeURIComponent(el.getAttribute(`data-${site}-title`) || $parent.getAttribute(\"data-title\") || \"\");\n    const img = encodeURIComponent($parent.getAttribute(\"data-img\") || \"\");\n    let url = encodeURIComponent($parent.getAttribute(\"data-url\") || \"\");\n    const via = encodeURIComponent($parent.getAttribute(\"data-via\") || \"\");\n    const desc = encodeURIComponent($parent.getAttribute(\"data-desc\") || \" \");\n\n    // tracking click events if google analytics enabled\n    const ga = window[window.GoogleAnalyticsObject || \"ga\"];\n    if (typeof ga === \"function\") {\n      ga(\"send\", \"event\", \"Social Share Button\", \"click\", site);\n    }\n\n    if (url.length === 0) {\n      url = encodeURIComponent(location.href);\n    }\n    switch (site) {\n    case \"email\":\n      location.href = `mailto:?subject=${title}&body=${url}`;\n      break;\n    case \"weibo\":\n      this.openUrl(`http://service.weibo.com/share/share.php?url=${url}&type=3&pic=${img}&title=${title}&appkey=${appkey}`, 620, 370);\n      break;\n    case \"twitter\": {\n      let hashtags = encodeURIComponent(el.getAttribute(`data-${site}-hashtags`) || $parent.getAttribute(\"data-hashtags\") || \"\");\n      let viaStr = \"\";\n      if (via.length > 0) {\n        viaStr = `&via=${via}`;\n      }\n      this.openUrl(`https://twitter.com/intent/tweet?url=${url}&text=${title}&hashtags=${hashtags}${viaStr}`, 650, 300);\n      break;\n    }\n    case \"douban\":\n      this.openUrl(`http://shuo.douban.com/!service/share?href=${url}&name=${title}&image=${img}&sel=${desc}`, 770, 470);\n      break;\n    case \"facebook\":\n      this.openUrl(`http://www.facebook.com/sharer/sharer.php?u=${url}`, 555, 400);\n      break;\n    case \"qq\":\n      this.openUrl(`http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=${url}&title=${title}&pics=${img}&summary=${desc}&site=${appkey}`);\n      break;\n    case \"google_bookmark\":\n      this.openUrl(`https://www.google.com/bookmarks/mark?op=edit&output=popup&bkmk=${url}&title=${title}`);\n      break;\n    case \"delicious\":\n      this.openUrl(`https://del.icio.us/save?url=${url}&title=${title}&jump=yes&pic=${img}`);\n      break;\n    case \"pinterest\":\n      this.openUrl(`http://www.pinterest.com/pin/create/button/?url=${url}&media=${img}&description=${title}`);\n      break;\n    case \"linkedin\":\n      this.openUrl(`https://www.linkedin.com/shareArticle?mini=true&url=${url}&title=${title}&summary=${desc}`);\n      break;\n    case \"xing\":\n      this.openUrl(`https://www.xing.com/spi/shares/new?url=${url}`);\n      break;\n    case \"vkontakte\":\n      this.openUrl(`http://vk.com/share.php?url=${url}&title=${title}&image=${img}`);\n      break;\n    case \"odnoklassniki\":\n      this.openUrl(`https://connect.ok.ru/offer?url=${url}&title=${title}&description=${desc}&imageUrl=${img}`);\n      break;\n    case \"wechat\":\n      if (!window.SocialShareWeChatButton) {\n        throw new Error(\"You should require social-share-button/wechat to your application.js\");\n      }\n      window.SocialShareWeChatButton.qrcode({\n        url: decodeURIComponent(url),\n        header: el.getAttribute(\"title\"),\n        footer: el.getAttribute(\"data-wechat-footer\")\n      });\n      break;\n\n    case \"tumblr\": {\n      let getTumblrExtra = (param) => {\n        const cutomData = el.getAttribute(`data-${param}`);\n        if (cutomData) {\n          return encodeURIComponent(cutomData);\n        }\n      };\n\n      let tumblrParams = () => {\n        const path = getTumblrExtra(\"type\") || \"link\";\n\n        const params = (() => {\n          switch (path) {\n          case \"text\": {\n            title = getTumblrExtra(\"title\") || title;\n            return `title=${title}`;\n          }\n          case \"photo\": {\n            title = getTumblrExtra(\"caption\") || title;\n            let source = getTumblrExtra(\"source\") || img;\n            return `caption=${title}&source=${source}`;\n          }\n          case \"quote\": {\n            let quote = getTumblrExtra(\"quote\") || title;\n            let source = getTumblrExtra(\"source\") || \"\";\n            return `quote=${quote}&source=${source}`;\n          }\n          // actually, it's a link clause\n          default: {\n            title = getTumblrExtra(\"title\") || title;\n            url = getTumblrExtra(\"url\") || url;\n            return `name=${title}&url=${url}`;\n          }} })();\n\n        return `/${path}?${params}`;\n      };\n\n      this.openUrl(`http://www.tumblr.com/share${tumblrParams()}`);\n      break;\n    }\n    case \"reddit\":\n      this.openUrl(`http://www.reddit.com/submit?url=${url}&newwindow=1`, 555, 400);\n      break;\n    case \"hacker_news\":\n      this.openUrl(`http://news.ycombinator.com/submitlink?u=${url}&t=${title}`, 770, 500);\n      break;\n    case \"telegram\":\n      this.openUrl(`https://telegram.me/share/url?text=${title}&url=${url}`);\n      break;\n    case \"whatsapp_app\": {\n      let whatsappAppUrl = `whatsapp://send?text=${title}%0A${url}`;\n      window.open(whatsappAppUrl, \"_top\");\n      break;\n    }\n    case \"whatsapp_web\":\n      this.openUrl(`https://web.whatsapp.com/send?text=${title}%0A${url}`);\n      break;\n    }\n    return false;\n  }\n};\n","var map = {\n\t\"./decidim/avatar-multiuser.png\": 47636,\n\t\"./decidim/brands/google.svg\": 5502,\n\t\"./decidim/cc-badge.png\": 40698,\n\t\"./decidim/decidim-logo.svg\": 6957,\n\t\"./decidim/default-avatar.svg\": 12158,\n\t\"./decidim/gamification/badges/decidim_gamification_badges_followers.svg\": 74582,\n\t\"./decidim/icons.svg\": 59255,\n\t\"./decidim/pattern.png\": 6221,\n\t\"./decidim/placeholder.jpg\": 89526,\n\t\"./decidim/vendor/leaflet/layers-2x.png\": 73243,\n\t\"./decidim/vendor/leaflet/layers.png\": 4124,\n\t\"./decidim/vendor/leaflet/marker-icon-2x.png\": 63479,\n\t\"./decidim/vendor/leaflet/marker-icon.png\": 89390,\n\t\"./decidim/vendor/leaflet/marker-shadow.png\": 69038,\n\t\"./decidim/vendor/social-share-button/delicious.svg\": 14844,\n\t\"./decidim/vendor/social-share-button/douban.svg\": 97710,\n\t\"./decidim/vendor/social-share-button/email.svg\": 47552,\n\t\"./decidim/vendor/social-share-button/facebook.svg\": 41777,\n\t\"./decidim/vendor/social-share-button/google_bookmark.svg\": 61315,\n\t\"./decidim/vendor/social-share-button/google_plus.svg\": 36965,\n\t\"./decidim/vendor/social-share-button/hacker_news.svg\": 84602,\n\t\"./decidim/vendor/social-share-button/linkedin.svg\": 26488,\n\t\"./decidim/vendor/social-share-button/odnoklassniki.svg\": 89601,\n\t\"./decidim/vendor/social-share-button/pinterest.svg\": 6020,\n\t\"./decidim/vendor/social-share-button/qq.svg\": 33148,\n\t\"./decidim/vendor/social-share-button/reddit.svg\": 13408,\n\t\"./decidim/vendor/social-share-button/telegram.svg\": 30831,\n\t\"./decidim/vendor/social-share-button/tumblr.svg\": 23462,\n\t\"./decidim/vendor/social-share-button/twitter.svg\": 32775,\n\t\"./decidim/vendor/social-share-button/vkontakte.svg\": 21125,\n\t\"./decidim/vendor/social-share-button/wechat.svg\": 28843,\n\t\"./decidim/vendor/social-share-button/weibo.svg\": 48979,\n\t\"./decidim/vendor/social-share-button/whatsapp.svg\": 99797,\n\t\"./decidim/vendor/social-share-button/x.svg\": 26245,\n\t\"./decidim/vendor/social-share-button/xing.svg\": 3684\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 = 26723;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/decidim-packs/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2835: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkapp\"] = self[\"webpackChunkapp\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [2415,7643,6690,2619,4705,4742,6800,3489], function() { return __webpack_require__(97800); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","require","$","$userRegistrationForm","$userGroupFields","find","inputSelector","setGroupFieldsVisibility","value","hide","show","concat","val","on","event","target","updateSubmitButton","$fieldContainer","$selectedItems","$form","closest","length","$submitButton","children","prop","messages","window","Decidim","config","get","mentionsModal","$searchInput","data","selected","options","iconsPath","removeLabel","removeRecipient","emptyFocusElement","querySelector","document","createElement","tabIndex","className","before","autoComplete","AutoComplete","dataMatchKeys","dataSource","query","callback","post","then","response","users","dataFilter","list","filter","item","includes","modifyResult","element","html","avatarUrl","name","nickname","directMessagesEnabled","addClass","append","directMessagesDisabled","membersCount","selection","detail","label","replace","setInput","push","evt","parentNode","tagName","focusElement","nextElementSibling","previousElementSibling","identifier","remove","focus","COUNT_KEY","DEFAULT_MESSAGES","charactersAtLeast","one","other","charactersLeft","MESSAGES","InputCharacterCounter","input","_this","_classCallCheck","this","$input","$target","minCharacters","parseInt","attr","maxCharacters","describeByCounter","announceThreshold","Math","floor","announceEveryThreshold","targetId","random","toString","substr","parent","is","after","$srTarget","$userInput","Quill","setTimeout","editor","siblings","root","initialize","key","updateInputLength","previousInputLength","inputLength","bindEvents","setDescribedBy","active","removeAttr","_this2","handleInput","updateStatus","updateScreenReaderStatus","addEventListener","getLength","checkScreenReaderUpdate","currentLength","getInputLength","srLength","getInputDirection","announcedAt","showMessages","arguments","undefined","message","remaining","_message","dispatchEvent","CustomEvent","text","getMessages","join","getScreenReaderLength","extend","createCharacterCounter","each","_i","elem","DEFAULT_ATTRIBUTES","role","EXCLUDE_CLASSES","EXCLUDE_ANCESTOR_CLASSES","EXCLUDE_REL","externalLink","ExternalLink","link","$link","setup","some","cls","hasClass","parents","rel","split","indexOf","hasAttribute","spacer","trim","generateElement","content","generateIcon","generateScreenReaderLabel","iconKey","attributes","iconAttributes","title","ariaLabel","Reflect","deleteProperty","htmlAttributes","forEach","newKey","ucw","toLowerCase","elHtml","$el","prepend","icon","updateExternalDomainLinks","whitelist","location","pathname","parts","match","domain","_n","externalHref","encodeURIComponent","correctErrors","FormValidator","form","handleError","announceFormError","$announce","el","_ev","trigger","CommentsComponent","$element","commentableGid","commentsUrl","rootDepth","order","lastCommentId","pollingInterval","singleComment","toggleTranslations","_getUID","mounted","_initializeComments","_fetchComments","_onInitOrder","_stopPolling","off","removeEventListener","_onTextInput","threadHtml","fromCurrentUser","$parent","$comment","$threads","_addComment","_finalizeCommentCreation","commentId","replyHtml","$replies","removeClass","Date","setUTCMilliseconds","_this3","$add","$opinionButtons","$text","_onToggleOpinion","$container","foundation","characterCounter","_pollComments","_this4","pollTimeout","_this5","successCallback","Rails","url","type","URLSearchParams","_objectSpread","success","clearTimeout","_setLoading","ev","$btn","$selectedState","$alignment","$submit","addInputEmoji","containers","querySelectorAll","_elem$closest","picker","EmojiButton","position","rootElement","parentElement","body","zIndex","reveal","style","overflowY","wrapper","btnContainer","btn","innerHTML","insertBefore","appendChild","handlerPicker","togglePicker","removeAttribute","setAttribute","_ref","emoji","Event","focusGuardClass","focusableNodes","focusableDisableableNodes","FocusGuard","container","guardedElement","Keyboard","enable","guards","guard","dataset","startGuard","createFocusGuard","endGuard","handleContainerFocus","visibleNodes","Array","from","isVisible","ind","isFocusGuard","isFocusable","_ind","blur","offsetWidth","offsetHeight","classList","contains","nodeName","getAttribute","tabindex","isNaN","Configuration","DataPicker","theDataPicker","focusGuard","dialog","$dialog","$title","$visibleReveal","trap","disable","svg4everybody","preventDefault","formDatePicker","_idx","createQuillEditor","comments","mountComponent","FormFilterComponent","links","sessionStorage","filteredParams","JSON","parse","getItem","href","backToListLink","selectedText","select","$temp","css","width","height","copyDone","execCommand","err","to","removeData","$msg","appendAround","matches","submit","disabled","apply","Foundation","hover","top","scrollTop","initializeListingOptionsMenu","containerSelector","pushState","registerCallback","callbackName","$targetMenu","dataAttribute","linkText","urlParameter","$impersonationWarning","endsAt","dayjs","exitInterval","setInterval","diff","diffInMinutes","round","reload","clearInterval","ConsentManager","modal","categories","cookieName","cookie","Cookies","warningElement","updateState","newState","state","stringify","host","sameSite","expires","secure","protocol","updateModalSelections","triggerState","script","consent","activeScript","src","replaceChild","allAccepted","original","childNodes","childNode","nodeType","Node","COMMENT_NODE","newElement","nodeValue","firstElementChild","createComment","outerHTML","cloned","cloneNode","triggerJavaScripts","triggerIframes","triggerWarnings","every","category","categoryEl","categoryInput","checked","essential","_toConsumableArray","manager","disabledIframes","iframe","initDisabledIframes","categoryButton","categoryDescription","add","acceptAllButton","rejectAllButton","saveSettingsButton","acceptAll","rejectAll","saveSettings","initModal","dialogWrapper","settingsButton","display","initDialog","morphdom","editUserForm","passwordChange","passwordFields","togglePasswordFieldValidators","enabled","field","initializeAccountForm","$deleteAccountForm","$deleteAccountModalForm","$openModalButton","$modal","reasonValue","error","console","stopPropagation","initializeDeleteAccount","redirectUrl","appendTo","index","querystring","jQuery","param","parameter","urlParts","urlBase","shift","queryString","prefix","lastIndexOf","splice","removeUrlParameter","$callout","ready","scrollTo","offset","behavior","$allDiffViews","$selected","$visibleDiffViewsId","not","first","slice","$visibleDiffViews","localStorage","getDismissedHelpers","serialized","dismissedHelpers","_index","setItem","addDismissedHelper","callbacks","callbackId","unregisterCallback","history","replaceState","onpopstate","isTrusted","hasOwnProperty","button","identitiesUrl","userIdentitiesDialog","click","ajax","done","liTag","method","urlDataAttr","dataType","$inputs","selectionStart","selectionEnd","originalEvent","jumpNext","maxLength","next","keyCode","jumpPrev","prev","$notificationsBellIcon","$wrapper","$section","$noNotificationsText","$pagination","emptyNotifications","$item","fadeOut","$checkbox","toggle","$responsiveTabBlock","innerWidth","toggleClass","process","allMessages","selfxssWarning","log","description","addUsersConversationDialog","n","s","_typeof","t","f","l","_version","_config","classPrefix","enableClasses","enableJSClass","usePrefixes","_q","addTest","fn","addAsyncTest","Modernizr","prototype","r","documentElement","c","a","i","aliases","Boolean","baseVal","RegExp","u","SocialShareButton","openUrl","left","screen","opt","open","share","path","params","site","appkey","img","via","desc","ga","GoogleAnalyticsObject","hashtags","viaStr","SocialShareWeChatButton","qrcode","decodeURIComponent","header","footer","getTumblrExtra","cutomData","source","quote","_source","whatsappAppUrl","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","call","m","O","result","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","getter","__esModule","d","definition","defineProperty","enumerable","g","globalThis","Function","obj","nmd","paths","p","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","bind","__webpack_exports__"],"sourceRoot":""}