{"version":3,"file":"js/decidim_core-ea3c7ddec9f235925fe5.js","mappings":"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","sources":["webpack://code/webpack/runtime/chunk loaded","webpack://code//code/app/packs/images|sync|/^\\.\\/.*$/","webpack://code/./app/packs/src/decidim/decidim_application.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/input_multiple_mentions.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/input_character_counter.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/dropdowns_menus.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/icon.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/external_link.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/external_domain_warning.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/form_validator.js","webpack://code/../usr/local/bundle/gems/decidim-comments-0.25.2/app/packs/src/decidim/comments/comments.component.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/input_emoji.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/index.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/clipboard.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/append_elements.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/conferences.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/results_listing.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/impersonation.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/entrypoints/decidim_core.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/account_form.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/append_redirect_url_to_modals.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/callout.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/conversations.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/diff_mode_dropdown.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/floating_help.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/history.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/identity_selector_dialog.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/input_autojump.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/notifications.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/represent_user_group.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/responsive_horizontal_tabs.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/security/selfxss_warning.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/start_conversation_dialog.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/tooltip_keep_on_hover.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/user_registrations.js","webpack://code/../usr/local/bundle/gems/decidim-core-0.25.2/app/packs/src/decidim/vendor/modernizr.js","webpack://code//usr/local/bundle/gems/decidim-core-0.25.2/app/packs/images|sync|/^\\.\\/.*$/","webpack://code/webpack/bootstrap","webpack://code/webpack/runtime/compat get default export","webpack://code/webpack/runtime/define property getters","webpack://code/webpack/runtime/global","webpack://code/webpack/runtime/hasOwnProperty shorthand","webpack://code/webpack/runtime/node module decorator","webpack://code/webpack/runtime/publicPath","webpack://code/webpack/runtime/jsonp chunk loading","webpack://code/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};","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nwebpackEmptyContext.id = 48999;\nmodule.exports = webpackEmptyContext;","// 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","/* eslint no-unused-vars: 0 */\nimport Tribute from \"src/decidim/vendor/tribute\"\n\n$(() => {\n const $multipleMentionContainer = $(\".js-multiple-mentions\");\n const $multipleMentionRecipientsContainer = $(\".js-multiple-mentions-recipients\");\n const nodatafound = $multipleMentionContainer.attr(\"data-noresults\");\n const directMessageDisabled = $multipleMentionContainer.attr(\"data-direct-messages-disabled\");\n\n const maxRecipients = 9;\n let mentionsCount = 0;\n\n /* eslint no-unused-vars: 0 */\n let deleteRecipient = function(element) {\n // Remove recipient\n element.remove();\n mentionsCount -= 1;\n // In case mentions container disable, enable again\n if ($multipleMentionContainer.prop(\"disabled\")) {\n $multipleMentionContainer.prop(\"disabled\", false);\n }\n };\n\n let noMatchTemplate = null\n if (nodatafound) {\n noMatchTemplate = () => `
  • ${nodatafound}
  • `;\n }\n\n // Returns a function, that, as long as it continues to be invoked, will not\n // be triggered. The function will be called after it stops being called for\n // N milliseconds\n /* eslint no-invalid-this: 0 */\n /* eslint consistent-this: 0 */\n /* eslint prefer-reflect: 0 */\n const debounce = function(callback, wait) {\n let timeout = null;\n return (...args) => {\n const context = this;\n clearTimeout(timeout);\n timeout = setTimeout(() => callback.apply(context, args), wait);\n };\n }\n\n /* eslint no-use-before-define: [\"error\", { \"variables\": false }]*/\n /* eslint no-unused-expressions: 0 */\n let remoteSearch = function(text, cb) {\n let exclusionIds = [];\n $multipleMentionRecipientsContainer.find(\"input[name^='recipient_id']\").each(function(index) {\n exclusionIds.push($(this).val());\n });\n let query = `{users(filter:{wildcard:\"${text}\",excludeIds:[${exclusionIds}]}){id,nickname,name,avatarUrl,__typename,...on UserGroup{membersCount},...on User{directMessagesEnabled}}}`;\n $.post(\"/api\", {query: query}).\n then((response) => {\n let data = response.data.users || {};\n cb(data)\n }).fail(function() {\n cb([])\n }).always(() => {\n // This function runs Tribute every single time you type something\n // So we must evalute DOM properties after each\n const $parent = $(tribute.current.element).parent();\n $parent.addClass(\"is-active\");\n\n // We need to move the container to the wrapper selected\n const $tribute = $parent.find(\".tribute-container\");\n // Remove the inline styles, relative to absolute positioning\n $tribute.removeAttr(\"style\");\n })\n };\n\n // tribute.js docs - http://github.com/zurb/tribute\n /* global Tribute*/\n /* eslint multiline-ternary: 0 */\n /* eslint no-ternary: 0 */\n let tribute = new Tribute({\n autocompleteMode: true,\n // avoid overloading the API if the user types too fast\n values: debounce(function (text, cb) {\n remoteSearch(text, (users) => cb(users));\n }, 250),\n positionMenu: true,\n menuContainer: null,\n menuItemLimit: 10,\n fillAttr: \"nickname\",\n noMatchTemplate: noMatchTemplate,\n lookup: (item) => item.nickname + item.name,\n selectTemplate: function(item) {\n mentionsCount += 1;\n if (mentionsCount >= maxRecipients) {\n $multipleMentionContainer.prop(\"disabled\", true);\n }\n if (typeof item === \"undefined\") {\n return null;\n }\n // Set recipient profile view\n let recipientLabel = `\n \n `;\n\n // Append new recipient to DOM\n if (item.original.__typename === \"UserGroup\" || item.original.directMessagesEnabled === \"true\") {\n $multipleMentionRecipientsContainer.append($(recipientLabel));\n $multipleMentionContainer.val(\"\");\n }\n\n // In order to add tabindex accessibility control to each recipient in list\n $multipleMentionRecipientsContainer.find(\"label\").each(function(index) {\n $(this).find(\"div\").attr(\"tabIndex\", 0).attr(\"aria-controls\", 0).attr(\"aria-label\", \"Close\").attr(\"role\", \"tab\");\n });\n\n // Clean input\n return \"\";\n },\n menuItemTemplate: function(item) {\n let svg = \"\";\n let enabled = item.original.directMessagesEnabled === \"true\";\n if (window.Decidim && item.original.__typename === \"UserGroup\") {\n enabled = true;\n const iconsPath = window.Decidim.config.get(\"icons_path\");\n svg = `${item.original.membersCount}x `;\n }\n let disabledElementClass = enabled ? \"\" : \"disabled-tribute-element\";\n let disabledElementMessage = enabled ? \"\" : ` ${directMessageDisabled}`;\n return `
    \n \"author-avatar\"\n ${item.original.nickname}\n ${item.original.name}\n ${svg}\n ${disabledElementMessage}\n
    `;\n }\n });\n\n let setupEvents = function($element) {\n // DOM manipulation\n $element.on(\"focusin\", (event) => {\n // Set the parent container relative to the current element\n tribute.menuContainer = event.target.parentNode;\n });\n $element.on(\"focusout\", (event) => {\n let $parent = $(event.target).parent();\n\n if ($parent.hasClass(\"is-active\")) {\n $parent.removeClass(\"is-active\");\n }\n });\n $element.on(\"input\", (event) => {\n let $parent = $(event.target).parent();\n\n if (tribute.isActive) {\n // We need to move the container to the wrapper selected\n let $tribute = $(\".tribute-container\");\n $tribute.appendTo($parent);\n // Remove the inline styles, relative to absolute positioning\n $tribute.removeAttr(\"style\");\n // Parent adaptation\n $parent.addClass(\"is-active\");\n } else {\n $parent.removeClass(\"is-active\");\n }\n });\n };\n\n let setupRecipientEvents = function($element) {\n // Allow delete with click on element in recipients list\n $element.on(\"click\", (event) => {\n let $target = event.target.parentNode;\n if ($target.tagName === \"LABEL\") {\n deleteRecipient($target);\n }\n });\n // Allow delete with keypress on element in recipients list\n $element.on(\"keypress\", (event) => {\n let $target = event.target.parentNode;\n if ($target.tagName === \"LABEL\") {\n deleteRecipient($target);\n }\n });\n };\n\n // Call only if we have containter to bind events to\n if ($multipleMentionContainer.length) {\n setupEvents($multipleMentionContainer);\n tribute.attach($multipleMentionContainer);\n }\n\n // Call only if we have containter to bind events to\n if ($multipleMentionRecipientsContainer.length) {\n setupRecipientEvents($multipleMentionRecipientsContainer);\n }\n});\n","const COUNT_KEY = \"%count%\";\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\n if (this.$target.length < 1) {\n let targetId = null;\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 this.$target = $(``)\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 this.bindEvents();\n }\n }\n\n bindEvents() {\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 const editor = Quill.find(this.$input.siblings(\".editor-container\")[0]);\n editor.on(\"text-change\", () => {\n this.updateStatus();\n });\n })\n }\n this.$input.on(\"keyup\", () => {\n this.updateStatus();\n });\n if (this.$input.get(0) !== null) {\n this.$input.get(0).addEventListener(\"emoji.added\", () => {\n this.updateStatus();\n });\n }\n this.updateStatus();\n }\n\n updateStatus() {\n const numCharacters = this.$input.val().length;\n const showMessages = [];\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 - numCharacters;\n let message = MESSAGES.charactersLeft.other;\n if (remaining === 1) {\n message = MESSAGES.charactersLeft.one;\n }\n showMessages.push(message.replace(COUNT_KEY, remaining));\n }\n\n this.$target.text(showMessages.join(\", \"));\n }\n}\n\nconst createCharacterCounter = ($input) => {\n $input.data(\"remaining-characters-counter\", new InputCharacterCounter($input));\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 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 // 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 = ``;\n const $el = $(elHtml);\n if (title) {\n $el.prepend(`${title}`);\n } else {\n // This keeps accessibility audit tools happy\n $el.prepend(`${iconKey}`);\n // Force hidden if title is not defined\n htmlAttributes[\"aria-hidden\"] = \"true\";\n }\n $el.attr(htmlAttributes);\n\n return $(\"
    \").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_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 (\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 this.$link.addClass(\"external-link-container\");\n let spacer = \" \";\n if (this.$link.text().trim().length < 1) {\n // Fixes image links extra space\n spacer = \"\";\n }\n this.$link.append(`${spacer}${this.generateElement()}`);\n }\n\n generateElement() {\n let content = `${this.generateIcon()}${this.generateScreenReaderLabel()}`;\n\n return `${content}`;\n }\n\n generateIcon() {\n return icon(\"external-link\");\n }\n\n generateScreenReaderLabel() {\n return `(${MESSAGES.externalLink})`;\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(\".ql-editor\").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 = $(\"
    \");\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\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 { 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.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\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 this._pollComments();\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 $.ajax({\n url: this.commentsUrl,\n method: \"GET\",\n contentType: \"application/javascript\",\n data: {\n \"commentable_gid\": this.commentableGid,\n \"root_depth\": this.rootDepth,\n order: this.order,\n after: this.lastCommentId\n }\n }).done(() => this._pollComments());\n }, this.pollingInterval);\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 });\n\n const wrapper = document.createElement(\"div\");\n wrapper.className = \"emoji__container\"\n const btnContainer = document.createElement(\"div\");\n btnContainer.className = \"emoji__trigger\"\n btnContainer.innerHTML = ''\n\n elem.parentNode.insertBefore(wrapper, elem);\n wrapper.appendChild(elem);\n wrapper.appendChild(btnContainer);\n\n btnContainer.addEventListener(\"click\", () => picker.togglePicker(btnContainer))\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","/* 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\"\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\n $(document).foundation();\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","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 * \n *\n * 2. Make sure the target element exists on the page:\n * \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 = $(``).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 += \" \";\n }\n } else {\n $msg = $('
    ');\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","/* 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 moment from \"moment\"\n\n$(() => {\n const $impersonationWarning = $(\".impersonation-warning\");\n if ($impersonationWarning.length) {\n const endsAt = moment($impersonationWarning.data(\"session-ends-at\"));\n const exitInterval = setInterval(() => {\n const diff = (endsAt - moment()) / 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","/* 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 \"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_validator\"\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\"\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","/**\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$(() => {\n const $deleteAccountForm = $(\".delete-account\");\n const $deleteAccountModalForm = $(\".delete-account-modal\");\n\n if ($deleteAccountForm.length > 0) {\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","/* 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 $(\"\").\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()} `);\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-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\") === \"escaped-html\") {\n $visibleDiffViews.filter(\"[id$=_unescaped]\").addClass(\"hide\");\n $visibleDiffViews.filter(\"[id$=_escaped]\").removeClass(\"hide\");\n }\n if ($target.attr(\"id\") === \"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","/* 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 he wants 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 */\n\n$(() => {\n if (!console) {\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","$(() => {\n const $userRegistrationForm = $(\"#register-form\");\n const $userGroupFields = $userRegistrationForm.find(\".user-group-fields\");\n const inputSelector = 'input[name=\"user[sign_up_as]\"]';\n const newsletterSelector = 'input[type=\"checkbox\"][name=\"user[newsletter]\"]';\n const $newsletterModal = $(\"#sign-up-newsletter-modal\");\n\n\n const setGroupFieldsVisibility = (value) => {\n if (value === \"user\") {\n $userGroupFields.hide();\n } else {\n $userGroupFields.show();\n }\n }\n\n const checkNewsletter = (check) => {\n $userRegistrationForm.find(newsletterSelector).prop(\"checked\", check);\n $newsletterModal.data(\"continue\", true);\n $newsletterModal.foundation(\"close\");\n $userRegistrationForm.submit();\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\n $userRegistrationForm.on(\"submit\", (event) => {\n const newsletterChecked = $userRegistrationForm.find(newsletterSelector);\n if (!$newsletterModal.data(\"continue\")) {\n if (!newsletterChecked.prop(\"checked\")) {\n event.preventDefault();\n $newsletterModal.foundation(\"open\");\n }\n }\n });\n\n $newsletterModal.find(\".check-newsletter\").on(\"click\", (event) => {\n checkNewsletter($(event.target).data(\"check\"));\n });\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