{"version":3,"file":"js/decidim_core-5a5ce12b9a18eabcbada.js","mappings":"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","sources":["webpack://app/webpack/runtime/chunk loaded","webpack://app/./app/packs/images/ sync ^\\.\\/.*$","webpack://app/./app/packs/src/vendor/hashcash.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/input_multiple_mentions.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/input_character_counter.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/dropdowns_menus.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/icon.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/external_link.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/external_domain_warning.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/form_validator.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-comments/app/packs/src/decidim/comments/comments.component.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/input_emoji.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/dialog_mode.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/focus_guard.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/index.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/back_to_list.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/append_elements.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/form_remote.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/conferences.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/results_listing.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/impersonation.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/data_consent/consent_manager.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/data_consent/index.js","webpack://app/./app/packs/src/decidim/decidim_application.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/entrypoints/decidim_core.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/account_form.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/append_redirect_url_to_modals.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/callout.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/conversations.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/diff_mode_dropdown.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/floating_help.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/form_attachments.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/history.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/identity_selector_dialog.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/input_autojump.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/notifications.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/represent_user_group.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/responsive_horizontal_tabs.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/security/selfxss_warning.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/start_conversation_dialog.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/tooltip_keep_on_hover.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/user_registrations.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/vendor/modernizr.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/app/packs/src/decidim/vendor/social-share-button.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-module-decidim_awesome-aedb4caa3fd6/app/packs/src/decidim/decidim_awesome/editors/editor.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-a8779971800f/decidim-core/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\"./bullet.png\": 39957\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 = 48999;","// http://www.hashcash.org/docs/hashcash.html\n// \nHashcash = function(input) {\n options = JSON.parse(input.getAttribute(\"data-hashcash\"))\n Hashcash.disableParentForm(input, options)\n input.dispatchEvent(new CustomEvent(\"hashcash:mint\", {bubbles: true}))\n\n Hashcash.mint(options.resource, options, function(stamp) {\n input.value = stamp.toString()\n Hashcash.enableParentForm(input, options)\n input.dispatchEvent(new CustomEvent(\"hashcash:minted\", {bubbles: true, detail: {stamp: stamp}}))\n })\n\n this.input = input\n input.form.addEventListener(\"submit\", this.preventFromAutoSubmitFromPasswordManagers.bind(this))\n}\n\nHashcash.setup = function() {\n if (document.readyState != \"loading\") {\n var input = document.querySelector(\"input#hashcash\")\n input && new Hashcash(input)\n } else\n document.addEventListener(\"DOMContentLoaded\", Hashcash.setup )\n}\n\nHashcash.setSubmitText = function(submit, text) {\n if (!text) {\n return\n }\n if (submit.tagName == \"BUTTON\") {\n !submit.originalValue && (submit.originalValue = submit.innerHTML)\n submit.innerHTML = text\n } else {\n !submit.originalValue && (submit.originalValue = submit.value)\n submit.value = text\n }\n}\n\nHashcash.disableParentForm = function(input, options) {\n input.form.querySelectorAll(\"[type=submit]\").forEach(function(submit) {\n Hashcash.setSubmitText(submit, options[\"waiting_message\"])\n submit.disabled = true\n })\n}\n\nHashcash.enableParentForm = function(input, options) {\n input.form.querySelectorAll(\"[type=submit]\").forEach(function(submit) {\n Hashcash.setSubmitText(submit, submit.originalValue)\n submit.disabled = null\n })\n}\n\nHashcash.prototype.preventFromAutoSubmitFromPasswordManagers = function(event) {\n this.input.value == \"\" && event.preventDefault()\n}\n\nHashcash.default = {\n version: 1,\n bits: 20,\n extension: null,\n}\n\nHashcash.mint = function(resource, options, callback) {\n // Format date to YYMMDD\n var date = new Date\n var year = date.getFullYear().toString()\n year = year.slice(year.length - 2, year.length)\n var month = (date.getMonth() + 1).toString().padStart(2, \"0\")\n var day = date.getDate().toString().padStart(2, \"0\")\n\n var stamp = new Hashcash.Stamp(\n options.version || Hashcash.default.version,\n options.bits || Hashcash.default.bits,\n options.date || year + month + day,\n resource,\n options.extension || Hashcash.default.extension,\n options.rand || Math.random().toString(36).substr(2, 10),\n )\n return stamp.work(callback)\n}\n\nHashcash.Stamp = function(version, bits, date, resource, extension, rand, counter = 0) {\n this.version = version\n this.bits = bits\n this.date = date\n this.resource = resource\n this.extension = extension\n this.rand = rand\n this.counter = counter\n}\n\nHashcash.Stamp.parse = function(string) {\n var args = string.split(\":\")\n return new Hashcash.Stamp(args[0], args[1], args[2], args[3], args[4], args[5], args[6])\n}\n\nHashcash.Stamp.prototype.toString = function() {\n return [this.version, this.bits, this.date, this.resource, this.extension, this.rand, this.counter].join(\":\")\n}\n\n// Trigger the given callback when the problem is solved.\n// In order to not freeze the page, setTimeout is called every 100ms to let some CPU to other tasks.\nHashcash.Stamp.prototype.work = function(callback) {\n this.startClock()\n var timer = performance.now()\n while (!this.check())\n if (this.counter++ && performance.now() - timer > 100)\n return setTimeout(this.work.bind(this), 0, callback)\n this.stopClock()\n callback(this)\n}\n\nHashcash.Stamp.prototype.check = function() {\n var array = Hashcash.sha1(this.toString())\n return array[0] >> (160-this.bits) == 0\n}\n\nHashcash.Stamp.prototype.startClock = function() {\n this.startedAt || (this.startedAt = performance.now())\n}\n\nHashcash.Stamp.prototype.stopClock = function() {\n this.endedAt || (this.endedAt = performance.now())\n var duration = this.endedAt - this.startedAt\n var speed = Math.round(this.counter * 1000 / duration)\n console.debug(\"Hashcash \" + this.toString() + \" minted in \" + duration + \"ms (\" + speed + \" per seconds)\")\n}\n\n/**\n * Secure Hash Algorithm (SHA1)\n * http://www.webtoolkit.info/\n **/\nHashcash.sha1 = function(msg) {\n var rotate_left = Hashcash.sha1.rotate_left\n var Utf8Encode = Hashcash.sha1.Utf8Encode\n\n var blockstart;\n var i, j;\n var W = new Array(80);\n var H0 = 0x67452301;\n var H1 = 0xEFCDAB89;\n var H2 = 0x98BADCFE;\n var H3 = 0x10325476;\n var H4 = 0xC3D2E1F0;\n var A, B, C, D, E;\n var temp;\n msg = Utf8Encode(msg);\n var msg_len = msg.length;\n var word_array = new Array();\n for (i = 0; i < msg_len - 3; i += 4) {\n j = msg.charCodeAt(i) << 24 | msg.charCodeAt(i + 1) << 16 |\n msg.charCodeAt(i + 2) << 8 | msg.charCodeAt(i + 3);\n word_array.push(j);\n }\n switch (msg_len % 4) {\n case 0:\n i = 0x080000000;\n break;\n case 1:\n i = msg.charCodeAt(msg_len - 1) << 24 | 0x0800000;\n break;\n case 2:\n i = msg.charCodeAt(msg_len - 2) << 24 | msg.charCodeAt(msg_len - 1) << 16 | 0x08000;\n break;\n case 3:\n i = msg.charCodeAt(msg_len - 3) << 24 | msg.charCodeAt(msg_len - 2) << 16 | msg.charCodeAt(msg_len - 1) << 8 | 0x80;\n break;\n }\n word_array.push(i);\n while ((word_array.length % 16) != 14) word_array.push(0);\n word_array.push(msg_len >>> 29);\n word_array.push((msg_len << 3) & 0x0ffffffff);\n for (blockstart = 0; blockstart < word_array.length; blockstart += 16) {\n for (i = 0; i < 16; i++) W[i] = word_array[blockstart + i];\n for (i = 16; i <= 79; i++) W[i] = rotate_left(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n A = H0;\n B = H1;\n C = H2;\n D = H3;\n E = H4;\n for (i = 0; i <= 19; i++) {\n temp = (rotate_left(A, 5) + ((B & C) | (~B & D)) + E + W[i] + 0x5A827999) & 0x0ffffffff;\n E = D;\n D = C;\n C = rotate_left(B, 30);\n B = A;\n A = temp;\n }\n for (i = 20; i <= 39; i++) {\n temp = (rotate_left(A, 5) + (B ^ C ^ D) + E + W[i] + 0x6ED9EBA1) & 0x0ffffffff;\n E = D;\n D = C;\n C = rotate_left(B, 30);\n B = A;\n A = temp;\n }\n for (i = 40; i <= 59; i++) {\n temp = (rotate_left(A, 5) + ((B & C) | (B & D) | (C & D)) + E + W[i] + 0x8F1BBCDC) & 0x0ffffffff;\n E = D;\n D = C;\n C = rotate_left(B, 30);\n B = A;\n A = temp;\n }\n for (i = 60; i <= 79; i++) {\n temp = (rotate_left(A, 5) + (B ^ C ^ D) + E + W[i] + 0xCA62C1D6) & 0x0ffffffff;\n E = D;\n D = C;\n C = rotate_left(B, 30);\n B = A;\n A = temp;\n }\n H0 = (H0 + A) & 0x0ffffffff;\n H1 = (H1 + B) & 0x0ffffffff;\n H2 = (H2 + C) & 0x0ffffffff;\n H3 = (H3 + D) & 0x0ffffffff;\n H4 = (H4 + E) & 0x0ffffffff;\n }\n return [H0, H1, H2, H3, H4]\n}\n\nHashcash.hexSha1 = function(msg) {\n var array = Hashcash.sha1(msg)\n var cvt_hex = Hashcash.sha1.cvt_hex\n return cvt_hex(array[0]) + cvt_hex(array[1]) + cvt_hex(array[2]) + cvt_hex(array3) + cvt_hex(array[4])\n}\n\nHashcash.sha1.rotate_left = function(n, s) {\n var t4 = (n << s) | (n >>> (32 - s));\n return t4;\n};\n\nHashcash.sha1.lsb_hex = function(val) {\n var str = '';\n var i;\n var vh;\n var vl;\n for (i = 0; i <= 6; i += 2) {\n vh = (val >>> (i * 4 + 4)) & 0x0f;\n vl = (val >>> (i * 4)) & 0x0f;\n str += vh.toString(16) + vl.toString(16);\n }\n return str;\n};\n\nHashcash.sha1.cvt_hex = function(val) {\n var str = '';\n var i;\n var v;\n for (i = 7; i >= 0; i--) {\n v = (val >>> (i * 4)) & 0x0f;\n str += v.toString(16);\n }\n return str;\n};\n\nHashcash.sha1.Utf8Encode = function(string) {\n string = string.replace(/\\r\\n/g, '\\n');\n var utftext = '';\n for (var n = 0; n < string.length; n++) {\n var c = string.charCodeAt(n);\n if (c < 128) {\n utftext += String.fromCharCode(c);\n } else if ((c > 127) && (c < 2048)) {\n utftext += String.fromCharCode((c >> 6) | 192);\n utftext += String.fromCharCode((c & 63) | 128);\n } else {\n utftext += String.fromCharCode((c >> 12) | 224);\n utftext += String.fromCharCode(((c >> 6) & 63) | 128);\n utftext += String.fromCharCode((c & 63) | 128);\n }\n }\n return utftext;\n};\n\nHashcash.setup()\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(window.Decidim.config.get(\"api_path\"), {\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 \"${value.name}\"\n ${value.nickname}\n ${value.name}\n `);\n if (value.directMessagesEnabled === \"false\") {\n $(element).addClass(\"disabled\");\n $(element).append(`${$searchInput.data().directMessagesDisabled}`);\n }\n if (value.membersCount) {\n $(element).append(`${value.membersCount}x `);\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
  • \n \n \"${selection.value.name}\"\n ${selection.value.name}\n \n
  • \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 = $(``)\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 ``\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 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 = ``;\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_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 = \" \";\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 `${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(\".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 = $(\"
    \");\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 = ''\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 \"@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. \"
    Foo bar
    \")\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","// 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)\nimport \"src/vendor/hashcash\";\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 $(\"\").\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-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","$(() => {\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 - 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","/* eslint-disable require-jsdoc, func-style */\n\n/*\n* Since version 0.25 we follow a different strategy and opt to destroy and override completely the original editor\n* That's because editors are instantiated directly instead of creating a global function to instantiate them\n*/\n\nimport lineBreakButtonHandler from \"src/decidim/editor/linebreak_module\"\nimport InscrybMDE from \"inscrybmde\"\nimport Europa from \"europa\"\nimport \"inline-attachment/src/inline-attachment\";\nimport \"inline-attachment/src/codemirror-4.inline-attachment\";\nimport \"inline-attachment/src/jquery.inline-attachment\";\nimport hljs from \"highlight.js\";\nimport \"highlight.js/styles/github.css\";\nimport \"src/decidim/editor/clipboard_override\"\nimport \"src/decidim/vendor/image-resize.min\"\nimport \"src/decidim/vendor/image-upload.min\"\nimport { marked } from \"marked\";\n\nconst DecidimAwesome = window.DecidimAwesome || {};\nconst quillFormats = [\"bold\", \"italic\", \"link\", \"underline\", \"header\", \"list\", \"video\", \"image\", \"alt\", \"break\", \"width\", \"style\", \"code\", \"blockquote\", \"indent\"];\n\n// A tricky way to destroy the quill editor\nexport function destroyQuillEditor(container) {\n if (container) {\n const content = $(container).find(\".ql-editor\").html();\n $(container).html(content);\n $(container).siblings(\".ql-toolbar\").remove();\n $(container).find(\"*[class*='ql-']\").removeClass((index, className) => (className.match(/(^|\\s)ql-\\S+/g) || []).join(\" \"));\n $(container).removeClass((index, className) => (className.match(/(^|\\s)ql-\\S+/g) || []).join(\" \"));\n if ($(container).next().is(\"p.help-text\")) {\n $(container).next().remove();\n }\n }\n else {\n console.error(`editor [${container}] not exists`);\n }\n}\n\nexport function createQuillEditor(container) {\n const toolbar = $(container).data(\"toolbar\");\n const disabled = $(container).data(\"disabled\");\n const allowedEmptyContentSelector = \"iframe,img\";\n\n let quillToolbar = [\n [\"bold\", \"italic\", \"underline\", \"linebreak\"],\n [{ list: \"ordered\" }, { list: \"bullet\" }],\n [\"link\", \"clean\"],\n [\"code\", \"blockquote\"],\n [{ \"indent\": \"-1\"}, { \"indent\": \"+1\" }]\n ];\n\n let addImage = false;\n\n if (toolbar === \"full\") {\n quillToolbar = [\n [{ header: [2, 3, 4, 5, 6, false] }],\n ...quillToolbar\n ];\n if (DecidimAwesome.allow_images_in_full_editor) {\n quillToolbar.push([\"video\", \"image\"]);\n addImage = true;\n } else {\n quillToolbar.push([\"video\"]);\n }\n } else if (toolbar === \"basic\") {\n if (DecidimAwesome.allow_images_in_small_editor) {\n quillToolbar.push([\"video\", \"image\"]);\n addImage = true;\n } else {\n quillToolbar.push([\"video\"]);\n }\n } else if (DecidimAwesome.allow_images_in_small_editor) {\n quillToolbar.push([\"image\"]);\n addImage = true;\n }\n\n let modules = {\n linebreak: {},\n toolbar: {\n container: quillToolbar,\n handlers: {\n \"linebreak\": lineBreakButtonHandler\n }\n }\n };\n\n const $input = $(container).siblings('input[type=\"hidden\"]');\n container.innerHTML = $input.val() || \"\";\n const token = $('meta[name=\"csrf-token\"]').attr(\"content\");\n if (addImage) {\n modules.imageResize = {\n modules: [\"Resize\", \"DisplaySize\"]\n }\n modules.imageUpload = {\n url: DecidimAwesome.editor_uploader_path,\n method: \"POST\",\n name: \"image\",\n withCredentials: false,\n headers: { \"X-CSRF-Token\": token },\n callbackOK: (serverResponse, next) => {\n $(\"div.ql-toolbar\").last().removeClass(\"editor-loading\")\n next(serverResponse.url);\n },\n callbackKO: (serverError) => {\n $(\"div.ql-toolbar\").last().removeClass(\"editor-loading\")\n let msg = serverError && serverError.body;\n try {\n msg = JSON.parse(msg).message;\n } catch (evt) { console.error(\"Parsing error\", evt); }\n console.error(`Image upload error: ${msg}`);\n let $p = $(`

    ${msg}

    `);\n $(container).after($p)\n setTimeout(() => {\n $p.fadeOut(1000, () => {\n $p.destroy();\n });\n }, 3000);\n },\n checkBeforeSend: (file, next) => {\n $(\"div.ql-toolbar\").last().addClass(\"editor-loading\")\n next(file);\n }\n }\n }\n const quill = new Quill(container, {\n modules: modules,\n formats: quillFormats,\n theme: \"snow\"\n });\n\n if (disabled) {\n quill.disable();\n }\n\n quill.on(\"text-change\", () => {\n const text = quill.getText();\n\n // Triggers CustomEvent with the cursor position\n // It is required in input_mentions.js\n let event = new CustomEvent(\"quill-position\", {\n detail: quill.getSelection()\n });\n container.dispatchEvent(event);\n\n if ((text === \"\\n\" || text === \"\\n\\n\") && quill.root.querySelectorAll(allowedEmptyContentSelector).length === 0) {\n $input.val(\"\");\n } else {\n const emptyParagraph = \"


    \";\n const cleanHTML = quill.root.innerHTML.replace(\n new RegExp(`^${emptyParagraph}|${emptyParagraph}$`, \"g\"),\n \"\"\n );\n $input.val(cleanHTML);\n }\n });\n // After editor is ready, linebreak_module deletes two extraneous new lines\n quill.emitter.emit(\"editor-ready\");\n\n if (addImage) {\n const text = $(container).data(\"dragAndDropHelpText\") || DecidimAwesome.texts.drag_and_drop_image;\n $(container).after(`

    ${text}

    `);\n }\n\n // After editor is ready, linebreak_module deletes two extraneous new lines\n quill.emitter.emit(\"editor-ready\");\n\n return quill;\n}\n\nexport function createMarkdownEditor(container) {\n const text = DecidimAwesome.texts.drag_and_drop_image;\n const token = $('meta[name=\"csrf-token\"]').attr(\"content\");\n const $input = $(container).siblings('input[type=\"hidden\"]');\n const $faker = $('