{"version":3,"file":"js/2750-9831326589a8bdf9062c.js","mappings":"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","sources":["webpack://app/../usr/local/bundle/gems/decidim-core-0.26.7/app/packs/src/decidim/ajax_modals.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.26.7/app/packs/src/decidim/configuration.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.26.7/app/packs/src/decidim/confirm.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.26.7/app/packs/src/decidim/data_picker.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.26.7/app/packs/src/decidim/editor.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.26.7/app/packs/src/decidim/form_datepicker.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.26.7/app/packs/src/decidim/delayed.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.26.7/app/packs/src/decidim/check_boxes_tree.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.26.7/app/packs/src/decidim/form_filter.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.26.7/app/packs/src/decidim/foundation-datepicker/js/locales/foundation-datepicker.lb.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.26.7/app/packs/src/decidim/gallery.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.26.7/app/packs/src/decidim/input_hashtags.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.26.7/app/packs/src/decidim/input_mentions.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.26.7/app/packs/src/decidim/input_tags.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.26.7/app/packs/src/decidim/session_timeouter.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.26.7/app/packs/src/decidim/vendor/foundation-datepicker.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.26.7/app/packs/src/decidim/vizzs/metrics.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.26.7/app/packs/src/decidim/vizzs/areachart.js","webpack://app/./node_modules/moment/locale/ sync ^\\.\\/.*$"],"sourcesContent":["$(() => {\n $(document).on(\"click\", \"a[data-open-url],button[data-open-url]\", (event) => {\n event.preventDefault();\n const link = event.currentTarget;\n const $modal = $(`#${link.dataset.open}`);\n $modal.html(\"
\");\n $.ajax({\n type: \"get\",\n url: link.dataset.openUrl,\n success: (html) => {\n const $html = $(html);\n $modal.html($html);\n $html.foundation();\n },\n error: function (request, status, error) {\n $modal.html(`

${status}

${error}

`);\n }\n });\n });\n});\n","export default class Configuration {\n constructor() {\n this.config = {};\n }\n\n set(key, value = null) {\n if (typeof key === \"object\") {\n this.config = { ...this.config, ...key };\n } else {\n this.config[key] = value;\n }\n }\n\n get(key) {\n return this.config[key];\n }\n}\n","/**\n * A custom confirm dialog for Decidim based on Foundation reveals.\n *\n * Note that this needs to be loaded before the application JS in order for\n * it to gain control over the confirm events BEFORE rails-ujs is loaded.\n */\n\nimport Rails from \"@rails/ujs\"\n\nlet TEMPLATE_HTML = null;\n\nclass ConfirmDialog {\n constructor(sourceElement) {\n this.$modal = $(TEMPLATE_HTML);\n this.$source = sourceElement;\n this.$content = $(\".confirm-modal-content\", this.$modal);\n this.$buttonConfirm = $(\"[data-confirm-ok]\", this.$modal);\n this.$buttonCancel = $(\"[data-confirm-cancel]\", this.$modal);\n\n // Avoid duplicate IDs and append the new modal to the body\n const titleId = `confirm-modal-title-${Math.random().toString(36).substring(7)}`;\n\n this.$modal.removeAttr(\"id\");\n $(\"#confirm-modal-title\", this.$modal).attr(\"id\", titleId);\n this.$modal.attr(\"aria-labelledby\", titleId);\n\n $(\"body\").append(this.$modal);\n this.$modal.foundation();\n }\n\n confirm(message) {\n this.$content.html(message);\n\n this.$buttonConfirm.off(\"click\");\n this.$buttonCancel.off(\"click\");\n\n return new Promise((resolve) => {\n this.$buttonConfirm.on(\"click\", (ev) => {\n ev.preventDefault();\n\n this.$modal.foundation(\"close\");\n resolve(true);\n this.$source.focus();\n });\n this.$buttonCancel.on(\"click\", (ev) => {\n ev.preventDefault();\n\n this.$modal.foundation(\"close\");\n resolve(false);\n this.$source.focus();\n });\n\n this.$modal.foundation(\"open\").on(\"closed.zf.reveal\", () => {\n this.$modal.remove();\n });\n });\n }\n}\n\n// Override the default confirm dialog by Rails\n// See:\n// https://github.com/rails/rails/blob/fba1064153d8e2f4654df7762a7d3664b93e9fc8/actionview/app/assets/javascripts/rails-ujs/features/confirm.coffee\n//\n// There is apparently a better way coming in Rails 6:\n// https://github.com/rails/rails/commit/e9aa7ecdee0aa7bb4dcfa5046881bde2f1fe21cc#diff-e1aaa45200e9adcbcb8baf1c5375b5d1\n//\n// The old approach is broken according to https://github.com/rails/rails/issues/36686#issuecomment-514213323\n// so for the moment this needs to be executed **before** Rails.start()\nconst allowAction = (ev, element) => {\n const message = $(element).data(\"confirm\");\n if (!message) {\n return true;\n }\n\n if (!Rails.fire(element, \"confirm\")) {\n return false;\n }\n\n if (TEMPLATE_HTML === null) {\n TEMPLATE_HTML = $(\"#confirm-modal\")[0].outerHTML;\n $(\"#confirm-modal\").remove();\n }\n\n const dialog = new ConfirmDialog(\n $(element)\n );\n dialog.confirm(message).then((answer) => {\n const completed = Rails.fire(element, \"confirm:complete\", [answer]);\n if (answer && completed) {\n // Allow the event to propagate normally and re-dispatch it without\n // the confirm data attribute which the Rails internal method is\n // checking.\n $(element).data(\"confirm\", null);\n $(element).removeAttr(\"data-confirm\");\n\n // The submit button click events won't do anything if they are\n // dispatched as is. In these cases, just submit the underlying form.\n if (ev.type === \"click\" &&\n (\n $(element).is('button[type=\"submit\"]') ||\n $(element).is('input[type=\"submit\"]')\n )\n ) {\n $(element).parents(\"form\").submit();\n } else {\n let origEv = ev.originalEvent || ev;\n let newEv = origEv;\n if (typeof Event === \"function\") {\n // Clone the event because otherwise some click events may not\n // work properly when re-dispatched.\n newEv = new origEv.constructor(origEv.type, origEv);\n }\n ev.target.dispatchEvent(newEv);\n }\n }\n });\n\n return false;\n};\nconst handleConfirm = (ev, element) => {\n if (!allowAction(ev, element)) {\n Rails.stopEverything(ev);\n }\n};\nconst getMatchingEventTarget = (ev, selector) => {\n let target = ev.target;\n while (!(!(target instanceof Element) || Rails.matches(target, selector))) {\n target = target.parentNode;\n }\n\n if (target instanceof Element) {\n return target;\n }\n\n return null;\n};\nconst handleDocumentEvent = (ev, matchSelectors) => {\n return matchSelectors.some((currentSelector) => {\n let target = getMatchingEventTarget(ev, currentSelector);\n if (target === null) {\n return false;\n }\n\n handleConfirm(ev, target);\n return true;\n });\n};\n\ndocument.addEventListener(\"click\", (ev) => {\n return handleDocumentEvent(ev, [\n Rails.linkClickSelector,\n Rails.buttonClickSelector,\n Rails.formInputClickSelector\n ]);\n});\ndocument.addEventListener(\"change\", (ev) => {\n return handleDocumentEvent(ev, [Rails.inputChangeSelector]);\n});\ndocument.addEventListener(\"submit\", (ev) => {\n return handleDocumentEvent(ev, [Rails.formSubmitSelector]);\n});\n\n// This is needed for the confirm dialog to work with Foundation Abide.\n// Abide registers its own submit click listeners since Foundation 5.6.x\n// which will be handled before the document listeners above. This would\n// break the custom confirm functionality when used with Foundation Abide.\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n $(Rails.formInputClickSelector).on(\"click.confirm\", (ev) => {\n handleConfirm(ev, getMatchingEventTarget(ev, Rails.formInputClickSelector));\n });\n});\n","export default class DataPicker {\n constructor(pickers) {\n this.modal = this._createModalContainer();\n this.modal.appendTo($(\"body\"));\n this.current = null;\n\n pickers.each((_index, picker) => {\n this.activate(picker);\n });\n }\n\n activate(picker) {\n let $picker = $(picker);\n\n this._setCurrentPicker($picker, null);\n\n let input = \"hidden\",\n name = this.current.name,\n values = this.current.values;\n\n if (this.current.multiple) {\n name += \"[]\";\n }\n\n $(\"div\", values).each((_index2, div) => {\n let value = $(\"a\", div).data(\"picker-value\");\n $(div).prepend($(``));\n });\n\n $picker.on(\"click\", \"a\", (event) => {\n event.preventDefault();\n if ($picker.hasClass(\"disabled\")) {\n return;\n }\n const isMultiPicker = $picker.hasClass(\"picker-multiple\");\n\n if ($(this._targetFromEvent(event)).hasClass(\"picker-prompt\") || !isMultiPicker) {\n this._openPicker($picker, this._targetFromEvent(event));\n } else if (this._targetFromEvent(event).tagName === \"A\") {\n this._removeValue($picker, this._targetFromEvent(event).parentNode);\n } else {\n this._removeValue($picker, this._targetFromEvent(event));\n }\n });\n\n $picker.on(\"click\", \"input\", (event) => {\n this._removeValue($picker, this._targetFromEvent(event));\n });\n\n if (this.current.autosort) {\n this._sort();\n }\n }\n\n enabled(picker, value) {\n $(picker).toggleClass(\"disabled\", !value);\n $(\"input\", picker).attr(\"disabled\", !value);\n }\n\n clear(picker) {\n $(\".picker-values\", picker).html(\"\");\n }\n\n save(picker) {\n return $(\".picker-values div:has(input:checked)\", picker).map((_index, div) => {\n let $link = $(\"a\", div);\n return {\n value: $(\"input\", div).val(),\n text: $link.text(),\n url: $link.attr(\"href\")\n };\n }).get();\n }\n\n load(picker, savedData) {\n this._setCurrentPicker($(picker), null);\n $.each(savedData, (_index, data) => {\n this._choose(data, { interactive: false, modify: false });\n });\n if (this.current.autosort) {\n this._sort();\n }\n }\n\n _createModalContainer() {\n // Add a header because we are referencing the title element with\n // `aria-labelledby`. If the title doesn't exist, the \"labelled by\"\n // reference is incorrect.\n const headerHtml = '
';\n\n return $(`
\n
${headerHtml}
\n \n
`);\n }\n\n _openPicker($picker, target) {\n this._setCurrentPicker($picker, target);\n this._load($(\"a\", target).attr(\"href\"));\n }\n\n _setCurrentPicker($picker, target) {\n let $target = false;\n if (target && !$(target).hasClass(\"picker-prompt\")) {\n $target = $(target);\n }\n\n this.current = {\n picker: $picker,\n name: $picker.data(\"picker-name\"),\n values: $picker.find(\".picker-values\"),\n multiple: $picker.hasClass(\"picker-multiple\"),\n autosort: $picker.hasClass(\"picker-multiple\") && $picker.hasClass(\"picker-autosort\"),\n target: $target\n };\n }\n\n _load(url) {\n $.ajax(url).done((resp) => {\n let modalContent = $(\".data_picker-modal-content\", this.modal);\n modalContent.html(resp);\n this._handleLinks(modalContent);\n this._handleCheckboxes(modalContent);\n this.modal.foundation(\"open\");\n });\n }\n\n _handleLinks(content) {\n $(\"a\", content).each((_index, link) => {\n let $link = $(link);\n $link.click((event) => {\n event.preventDefault();\n if ($link.data(\"close\") || $link.data(\"close\") === \"\") {\n return;\n }\n\n let chooseUrl = $link.attr(\"href\");\n if (chooseUrl) {\n if (typeof $link.data(\"picker-choose\") === \"undefined\") {\n this._load(chooseUrl);\n } else {\n this._choose(\n { url: chooseUrl, value: $link.data(\"picker-value\") || \"\", text: $link.data(\"picker-text\") || \"\" }\n );\n }\n }\n });\n });\n }\n\n _handleCheckboxes(content) {\n $(\"input[type=checkbox][data-picker-choose]\", content).each((_index, checkbox) => {\n const $checkbox = $(checkbox);\n checkbox.checked = this._targetFromValue($checkbox.val()) !== null;\n }).change((event) => {\n const $checkbox = $(event.target);\n if (event.target.checked) {\n this._choose(\n { url: $checkbox.data(\"picker-url\"), value: $checkbox.val() || \"\", text: $checkbox.data(\"picker-text\") || \"\" },\n { modify: false, close: false }\n );\n }\n else {\n this._removeValue(this.current.picker, this._targetFromValue($checkbox.val()));\n }\n });\n }\n\n _choose(data, opts = {}) {\n const options = Object.assign({ interactive: true, modify: true, close: true }, opts);\n\n let dataText = this._escape(data.text);\n let choosenOption = null;\n\n if (!this.current.target && options.modify) {\n this.current.target = this._targetFromValue(data.value);\n }\n\n // Add or update value appearance\n if (this.current.target && options.modify) {\n let link = $(\"a\", this.current.target);\n link.data(\"picker-value\", data.value);\n link.attr(\"href\", data.url);\n choosenOption = this.current.target;\n if (this.current.multiple) {\n link.html(`× ${dataText}`);\n } else {\n link.text(dataText);\n }\n } else {\n let input = \"hidden\",\n name = this.current.name;\n\n if (this.current.multiple) {\n name += \"[]\";\n choosenOption = $(`
× ${dataText}
`);\n } else {\n choosenOption = $(`
${dataText}
`);\n }\n choosenOption.appendTo(this.current.values);\n\n if (!this.current.target) {\n this.current.target = choosenOption;\n }\n }\n\n // Set input value\n let $input = $(\"input\", choosenOption);\n $input.attr(\"value\", data.value);\n\n if (this.current.autosort) {\n this._sort();\n }\n\n if (options.interactive) {\n // Raise changed event\n $input.trigger(\"change\");\n this._removeErrors();\n\n if (options.close) {\n this._close();\n }\n }\n }\n\n _sort() {\n const values = $(\".picker-values\", this.current.picker);\n values.children().sort((item1, item2) => $(\"input\", item1).val() - $(\"input\", item2).val()).detach().appendTo(values);\n }\n\n _close() {\n // Close modal and unset target element\n this.modal.foundation(\"close\");\n this.current.target = null;\n }\n\n _removeValue($picker, target) {\n if (target) {\n this._setCurrentPicker($picker, target);\n // Fadeout (with time) doesn't work in system tests\n let fadeoutTime = 500;\n if (navigator && navigator.webdriver) {\n fadeoutTime = 0;\n }\n this.current.target.fadeOut(fadeoutTime, () => {\n this.current.target.remove();\n this.current.target = null;\n });\n }\n }\n\n _removeErrors() {\n let parent = this.current.picker.parent();\n $(\".is-invalid-input\", parent).removeClass(\"is-invalid-input\");\n $(\".is-invalid-label\", parent).removeClass(\"is-invalid-label\");\n $(\".form-error.is-visible\", parent).removeClass(\"is-visible\");\n }\n\n _escape(str) {\n return str.replace(/[\\u00A0-\\u9999<>&]/gim, function (char) {\n return `&#${char.charCodeAt(0)};`;\n });\n }\n\n _targetFromEvent(event) {\n return event.target.parentNode;\n }\n\n _targetFromValue(value) {\n return $(`[data-picker-value=${value}]`, this.current.picker).parent()[0] || null;\n }\n}\n","/* eslint-disable require-jsdoc */\n\nimport lineBreakButtonHandler from \"src/decidim/editor/linebreak_module\";\nimport \"src/decidim/editor/clipboard_override\";\nimport \"src/decidim/vendor/image-resize.min\";\nimport \"src/decidim/vendor/image-upload.min\";\n\nconst quillFormats = [\n \"bold\",\n \"italic\",\n \"link\",\n \"underline\",\n \"header\",\n \"list\",\n \"alt\",\n \"break\",\n \"width\",\n \"style\",\n \"code\",\n \"blockquote\",\n \"indent\"\n];\n\nexport default function createQuillEditor(container) {\n const toolbar = $(container).data(\"toolbar\");\n const disabled = $(container).data(\"disabled\");\n\n const allowedEmptyContentSelector = \"iframe\";\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 let addVideo = false;\n\n /**\n * - basic = only basic controls without titles\n * - content = basic + headings\n * - full = basic + headings + image + video\n */\n if (toolbar === \"content\") {\n quillToolbar = [[{ header: [2, 3, 4, 5, 6, false] }], ...quillToolbar];\n } else if (toolbar === \"full\") {\n addImage = true;\n addVideo = true;\n quillToolbar = [\n [{ header: [2, 3, 4, 5, 6, false] }],\n ...quillToolbar,\n [\"video\"],\n [\"image\"]\n ];\n }\n\n let modules = {\n linebreak: {},\n toolbar: {\n container: quillToolbar,\n handlers: {\n linebreak: lineBreakButtonHandler\n }\n }\n };\n const $input = $(container).siblings('input[type=\"hidden\"]');\n container.innerHTML = $input.val() || \"\";\n const token = $('meta[name=\"csrf-token\"]').attr(\"content\");\n\n if (addVideo) {\n quillFormats.push(\"video\");\n }\n\n if (addImage) {\n // Attempt to allow images only if the image support is enabled at editor support.\n // see: https://github.com/quilljs/quill/issues/1108\n quillFormats.push(\"image\");\n\n modules.imageResize = {\n modules: [\"Resize\", \"DisplaySize\"]\n };\n modules.imageUpload = {\n url: $(container).data(\"uploadImagesPath\"),\n method: \"POST\",\n name: \"image\",\n withCredentials: false,\n headers: { \"X-CSRF-Token\": token },\n callbackOK: (serverResponse, next) => {\n $(\"div.ql-toolbar\").last().removeClass(\"editor-loading\");\n next(serverResponse.url);\n },\n callbackKO: (serverError) => {\n $(\"div.ql-toolbar\").last().removeClass(\"editor-loading\");\n console.log(`Image upload error: ${serverError.message}`);\n },\n checkBeforeSend: (file, next) => {\n $(\"div.ql-toolbar\").last().addClass(\"editor-loading\");\n next(file);\n }\n };\n\n const text = $(container).data(\"dragAndDropHelpText\");\n $(container).after(\n `

${text}

`\n );\n }\n const quill = new Quill(container, {\n modules: modules,\n formats: quillFormats,\n theme: \"snow\"\n });\n\n if (addImage === false) {\n // Firefox natively implements image drop in contenteditable which is why we need to disable that\n quill.root.addEventListener(\"drop\", (ev) => ev.preventDefault());\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 (\n (text === \"\\n\" || text === \"\\n\\n\") &&\n quill.root.querySelectorAll(allowedEmptyContentSelector).length === 0\n ) {\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 return quill;\n}\n","/* eslint-disable require-jsdoc */\n\nexport default function formDatePicker() {\n $(\"[data-datepicker]\").each((_index, node) => {\n const language = $(\"html\").attr(\"lang\") || \"en\";\n const initialDate = $(node).data(\"startdate\") || \"\";\n const pickTime = $(node).data(\"timepicker\") === \"\";\n const languageProps = $(node).fdatepicker.dates[language] && $(node).fdatepicker.dates[language].format;\n let format = $(node).data(\"date-format\") || languageProps || \"mm/dd/yyyy\";\n\n $(node).fdatepicker({\n format,\n initialDate,\n language,\n pickTime,\n disableDblClickSelection: true,\n leftArrow: \"<<\",\n rightArrow: \">>\"\n });\n });\n}\n","/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds.\n * @param {Object} context - the context for the called function.\n * @param {Function} func - the function to be executed.\n * @param {int} wait - number of milliseconds to wait before executing the function.\n * @private\n * @returns {Void} - Returns nothing.\n */\nexport default function delayed(context, func, wait) {\n let timeout = null;\n\n return function(...args) {\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n timeout = null;\n Reflect.apply(func, context, args);\n }, wait);\n }\n}\n","/**\n * CheckBoxesTree component.\n */\nexport default class CheckBoxesTree {\n constructor() {\n this.checkboxesTree = document.querySelectorAll(\"[data-checkboxes-tree]\");\n if (!this.checkboxesTree) {\n return;\n }\n\n this.globalChecks = document.querySelectorAll(\"[data-global-checkbox] input\");\n this.globalChecks.forEach((global) => {\n if (global.value === \"\") {\n global.classList.add(\"ignore-filter\")\n }\n });\n this.checkGlobalCheck();\n\n // Event listeners\n this.checkboxesTree.forEach((input) => input.addEventListener(\"click\", (event) => this.checkTheCheckBoxes(event.target)));\n document.querySelectorAll(\"[data-children-checkbox] input\").forEach((input) => {\n input.addEventListener(\"change\", (event) => this.checkTheCheckParent(event.target));\n });\n\n // Review parent checkboxes on initial load\n document.querySelectorAll(\"[data-children-checkbox] input\").forEach((input) => {\n this.checkTheCheckParent(input);\n });\n }\n\n /**\n * Set checkboxes as checked if included in given values\n * @public\n * @param {Array} checkboxes - array of checkboxs to check\n * @param {Array} values - values of checkboxes that should be checked\n * @returns {Void} - Returns nothing.\n */\n updateChecked(checkboxes, values) {\n checkboxes.each((index, checkbox) => {\n if ((checkbox.value === \"\" && values.length === 1) || (checkbox.value !== \"\" && values.includes(checkbox.value))) {\n checkbox.checked = true;\n this.checkTheCheckBoxes(checkbox);\n this.checkTheCheckParent(checkbox);\n }\n });\n }\n\n /**\n * Set the container form(s) for the component, to disable ignored filters before submitting them\n * @public\n * @param {query} theForm - form or forms where the component will be used\n * @returns {Void} - Returns nothing.\n */\n setContainerForm(theForm) {\n theForm.on(\"submit ajax:before\", () => {\n theForm.find(\".ignore-filters input, input.ignore-filter\").each((idx, elem) => {\n elem.disabled = true;\n });\n });\n\n theForm.on(\"ajax:send\", () => {\n theForm.find(\".ignore-filters input, input.ignore-filter\").each((idx, elem) => {\n elem.disabled = false;\n });\n });\n }\n\n /**\n * Handles the click action on any checkbox.\n * @private\n * @param {Input} target - the input that has been checked\n * @returns {Void} - Returns nothing.\n */\n checkTheCheckBoxes(target) {\n // Quis custodiet ipsos custodes?\n const targetChecks = target.dataset.checkboxesTree;\n const checkStatus = target.checked;\n const allChecks = document.querySelectorAll(`#${targetChecks} input[type='checkbox']`);\n\n allChecks.forEach((input) => {\n input.checked = checkStatus;\n input.indeterminate = false;\n input.classList.add(\"ignore-filter\");\n });\n }\n\n /**\n * Update global checkboxes state when the current selection changes\n * @private\n * @returns {Void} - Returns nothing.\n */\n checkGlobalCheck() {\n this.globalChecks.forEach((global) => {\n const checksContext = global.dataset.checkboxesTree;\n const totalInputs = document.querySelectorAll(\n `#${checksContext} input[type='checkbox']`\n );\n const checkedInputs = document.querySelectorAll(\n `#${checksContext} input[type='checkbox']:checked`\n );\n const indeterminateInputs = Array.from(totalInputs).filter((checkbox) => checkbox.indeterminate)\n\n if (checkedInputs.length === 0 && indeterminateInputs.length === 0) {\n global.checked = false;\n global.indeterminate = false;\n } else if (checkedInputs.length === totalInputs.length && indeterminateInputs.length === 0) {\n global.checked = true;\n global.indeterminate = false;\n } else {\n global.checked = true;\n global.indeterminate = true;\n }\n\n totalInputs.forEach((input) => {\n if (global.indeterminate && !input.indeterminate) {\n input.classList.remove(\"ignore-filter\");\n } else {\n input.classList.add(\"ignore-filter\");\n }\n const subfilters = input.parentNode.parentNode.nextElementSibling;\n if (subfilters && subfilters.classList.contains(\"filters__subfilters\")) {\n if (input.indeterminate) {\n subfilters.classList.remove(\"ignore-filters\");\n } else {\n subfilters.classList.add(\"ignore-filters\");\n }\n }\n });\n });\n }\n\n /**\n * Update children checkboxes state when the current selection changes\n * @private\n * @param {Input} input - the checkbox to check its parent\n * @returns {Void} - Returns nothing.\n */\n checkTheCheckParent(input) {\n const checkBoxContext = $(input).parents(\".filters__subfilters\").attr(\"id\");\n if (!checkBoxContext) {\n this.checkGlobalCheck();\n return;\n }\n\n const parentCheck = document.querySelector(\n `[data-checkboxes-tree=${checkBoxContext}]`\n );\n const totalCheckSiblings = document.querySelectorAll(\n `#${checkBoxContext} > div > [data-children-checkbox] > input, #${checkBoxContext} > [data-children-checkbox] > input`\n );\n const checkedSiblings = document.querySelectorAll(\n `#${checkBoxContext} > div > [data-children-checkbox] > input:checked, #${checkBoxContext} > [data-children-checkbox] > input:checked`\n );\n const indeterminateSiblings = Array.from(totalCheckSiblings).filter((checkbox) => checkbox.indeterminate)\n\n if (checkedSiblings.length === 0 && indeterminateSiblings.length === 0) {\n parentCheck.checked = false;\n parentCheck.indeterminate = false;\n } else if (checkedSiblings.length === totalCheckSiblings.length && indeterminateSiblings.length === 0) {\n parentCheck.checked = true;\n parentCheck.indeterminate = false;\n } else {\n parentCheck.checked = true;\n parentCheck.indeterminate = true;\n }\n\n totalCheckSiblings.forEach((sibling) => {\n if (parent.indeterminate && !sibling.indeterminate) {\n sibling.classList.remove(\"ignore-filter\");\n } else {\n sibling.classList.add(\"ignore-filter\");\n }\n const subfilters = sibling.parentNode.parentNode.nextElementSibling;\n if (subfilters && subfilters.classList.contains(\"filters__subfilters\")) {\n if (sibling.indeterminate) {\n subfilters.classList.remove(\"ignore-filters\");\n } else {\n subfilters.classList.add(\"ignore-filters\");\n }\n }\n });\n\n this.checkTheCheckParent(parentCheck);\n }\n}\n","/* eslint-disable no-div-regex, no-useless-escape, no-param-reassign, id-length */\n/* eslint max-lines: [\"error\", {\"max\": 350, \"skipBlankLines\": true}] */\n\n/**\n * A plain Javascript component that handles the form filter.\n * @class\n * @augments Component\n */\n\nimport delayed from \"src/decidim/delayed\"\nimport CheckBoxesTree from \"src/decidim/check_boxes_tree\"\nimport { registerCallback, unregisterCallback, pushState, replaceState, state } from \"src/decidim/history\"\nimport DataPicker from \"src/decidim/data_picker\"\n\nexport default class FormFilterComponent {\n constructor($form) {\n this.$form = $form;\n this.id = this.$form.attr(\"id\") || this._getUID();\n this.mounted = false;\n this.changeEvents = true;\n this.theCheckBoxesTree = new CheckBoxesTree();\n this.theDataPicker = window.theDataPicker || new DataPicker($(\".data-picker\"));\n\n this._updateInitialState();\n this._onFormChange = delayed(this, this._onFormChange.bind(this));\n this._onFormSubmit = delayed(this, this._onFormSubmit.bind(this));\n this._onPopState = this._onPopState.bind(this);\n\n if (window.Decidim.PopStateHandler) {\n this.popStateSubmiter = false;\n } else {\n this.popStateSubmiter = true;\n window.Decidim.PopStateHandler = this.id;\n }\n }\n\n /**\n * Handles the logic for unmounting the component\n * @public\n * @returns {Void} - Returns nothing\n */\n unmountComponent() {\n if (this.mounted) {\n this.mounted = false;\n this.$form.off(\"change\", \"input, select\", this._onFormChange);\n this.$form.off(\"submit\", this._onFormSubmit);\n\n unregisterCallback(`filters-${this.id}`)\n }\n }\n\n /**\n * Handles the logic for mounting the component\n * @public\n * @returns {Void} - Returns nothing\n */\n mountComponent() {\n if (this.$form.length > 0 && !this.mounted) {\n this.mounted = true;\n let queue = 0;\n\n let contentContainer = $(this.$form.closest(\".filters\").parent().find(\".skip\").attr(\"href\"));\n if (contentContainer.length === 0 && this.$form.data(\"remoteFill\")) {\n contentContainer = this.$form.data(\"remoteFill\");\n }\n this.$form.on(\"change\", \"input:not([data-disable-dynamic-change]), select:not([data-disable-dynamic-change])\", this._onFormChange);\n this.$form.on(\"submit\", this._onFormSubmit);\n\n this.currentFormRequest = null;\n this.$form.on(\"ajax:beforeSend\", (e) => {\n if (this.currentFormRequest) {\n this.currentFormRequest.abort();\n }\n this.currentFormRequest = e.originalEvent.detail[0];\n queue += 1;\n if (queue > 0 && contentContainer.length > 0 && !contentContainer.hasClass(\"spinner-container\")) {\n contentContainer.addClass(\"spinner-container\");\n }\n });\n\n this.$form.on(\"ajax:success\", () => {\n queue -= 1;\n if (queue <= 0 && contentContainer.length > 0) {\n contentContainer.removeClass(\"spinner-container\");\n }\n });\n\n this.$form.on(\"ajax:error\", () => {\n queue -= 1;\n if (queue <= 0 && contentContainer.length > 0) {\n contentContainer.removeClass(\"spinner-container\");\n }\n this.$form.find(\".spinner-container\").addClass(\"hide\");\n });\n\n this.theCheckBoxesTree.setContainerForm(this.$form);\n\n registerCallback(`filters-${this.id}`, (currentState) => {\n this._onPopState(currentState);\n });\n }\n }\n\n /**\n * Sets path in the browser history with the initial filters state, to allow to restoring it when using browser history.\n * @private\n * @returns {Void} - Returns nothing.\n */\n _updateInitialState() {\n const [initialPath, initialState] = this._currentStateAndPath();\n initialState._path = initialPath\n replaceState(null, initialState);\n }\n\n /**\n * Finds the current location.\n * @param {boolean} withHost - include the host part in the returned location\n * @private\n * @returns {String} - Returns the current location.\n */\n _getLocation(withHost = true) {\n const currentState = state();\n let path = \"\";\n\n if (currentState && currentState._path) {\n path = currentState._path;\n } else {\n path = window.location.pathname + window.location.search + window.location.hash;\n }\n\n if (withHost) {\n return window.location.origin + path;\n }\n return path;\n }\n\n /**\n * Parse current location and get filter values.\n * @private\n * @returns {Object} - An object where a key correspond to a filter field\n * and the value is the current value for the filter.\n */\n _parseLocationFilterValues() {\n // Every location param is constructed like this: filter[key]=value\n let regexpResult = decodeURIComponent(this._getLocation()).match(/filter\\[([^\\]]*)\\](?:\\[\\])?=([^&]*)/g);\n\n // The RegExp g flag returns null or an array of coincidences. It doesn't return the match groups\n if (regexpResult) {\n const filterParams = regexpResult.reduce((acc, result) => {\n const [, key, array, value] = result.match(/filter\\[([^\\]]*)\\](\\[\\])?=([^&]*)/);\n if (array) {\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(value);\n } else {\n acc[key] = value;\n }\n return acc;\n }, {});\n\n return filterParams;\n }\n\n return null;\n }\n\n /**\n * Parse current location and get the current order.\n * @private\n * @returns {string} - The current order\n */\n _parseLocationOrderValue() {\n const url = this._getLocation();\n const match = url.match(/order=([^&]*)/);\n const $orderMenu = this.$form.find(\".order-by .menu\");\n let order = $orderMenu.find(\".menu a:first\").data(\"order\");\n\n if (match) {\n order = match[1];\n }\n\n return order;\n }\n\n /**\n * Clears the form to start with a clean state.\n * @private\n * @returns {Void} - Returns nothing.\n */\n _clearForm() {\n this.$form.find(\"input[type=checkbox]\").each((index, element) => {\n element.checked = element.indeterminate = false;\n });\n this.$form.find(\"input[type=radio]\").attr(\"checked\", false);\n this.$form.find(\".data-picker\").each((_index, picker) => {\n this.theDataPicker.clear(picker);\n });\n\n // This ensure the form is reset in a valid state where a fieldset of\n // radio buttons has the first selected.\n this.$form.find(\"fieldset input[type=radio]:first\").each(function () {\n // I need the this to iterate a jQuery collection\n $(this)[0].checked = true; // eslint-disable-line no-invalid-this\n });\n }\n\n /**\n * Handles the logic when going back to a previous state in the filter form.\n * @private\n * @param {Object} currentState - state stored along with location URL\n * @returns {Void} - Returns nothing.\n */\n _onPopState(currentState) {\n this.changeEvents = false;\n this._clearForm();\n\n const filterParams = this._parseLocationFilterValues();\n const currentOrder = this._parseLocationOrderValue();\n\n this.$form.find(\"input.order_filter\").val(currentOrder);\n\n if (filterParams) {\n const fieldIds = Object.keys(filterParams);\n\n // Iterate the filter params and set the correct form values\n fieldIds.forEach((fieldName) => {\n let value = filterParams[fieldName];\n\n if (Array.isArray(value)) {\n let checkboxes = this.$form.find(`input[type=checkbox][name=\"filter[${fieldName}][]\"]`);\n this.theCheckBoxesTree.updateChecked(checkboxes, value);\n } else {\n this.$form.find(`*[name=\"filter[${fieldName}]\"]`).each((index, element) => {\n switch (element.type) {\n case \"hidden\":\n break;\n case \"radio\":\n case \"checkbox\":\n element.checked = value === element.value;\n break;\n default:\n element.value = value;\n }\n });\n }\n });\n }\n\n // Retrieves picker information for selected values (value, text and link) from the state object\n $(\".data-picker\", this.$form).each((_index, picker) => {\n let pickerState = currentState[picker.id];\n if (pickerState) {\n this.theDataPicker.load(picker, pickerState);\n }\n })\n\n // Only one instance should submit the form on browser history navigation\n if (this.popStateSubmiter) {\n Rails.fire(this.$form[0], \"submit\", { from: \"pop\" });\n }\n\n this.changeEvents = true;\n }\n\n /**\n * Handles the logic to decide whether the form should be submitted or not\n * after a form change event. The form is only submitted when changes have\n * occurred.\n * @private\n * @returns {Void} - Returns nothing.\n */\n _onFormChange() {\n if (!this.changeEvents) {\n return;\n }\n\n const [newPath] = this._currentStateAndPath();\n const path = this._getLocation(false);\n\n if (newPath === path) {\n return;\n }\n\n Rails.fire(this.$form[0], \"submit\");\n }\n\n /**\n * Saves the current state of the search on form submit to update the search\n * parameters to the URL and store the picker states.\n * @private\n * @param {jQuery.Event} ev The event that caused the form to submit.\n * @returns {Void} - Returns nothing.\n */\n _onFormSubmit(ev) {\n const eventDetail = ev.originalEvent.detail;\n if (eventDetail && eventDetail.from === \"pop\") {\n return;\n }\n\n const [newPath, newState] = this._currentStateAndPath();\n\n pushState(newPath, newState);\n this._saveFilters(newPath);\n }\n\n /**\n * Calculates the path and the state associated to the filters inputs.\n * @private\n * @returns {Array} - Returns an array with the path and the state for the current filters state.\n */\n _currentStateAndPath() {\n const formAction = this.$form.attr(\"action\");\n const params = this.$form.find(\":not(.ignore-filters)\").find(\"select:not(.ignore-filter), input:not(.ignore-filter)\").serialize();\n\n let path = \"\";\n let currentState = {};\n\n if (formAction.indexOf(\"?\") < 0) {\n path = `${formAction}?${params}`;\n } else {\n path = `${formAction}&${params}`;\n }\n\n // Stores picker information for selected values (value, text and link) in the currentState object\n $(\".data-picker\", this.$form).each((_index, picker) => {\n currentState[picker.id] = this.theDataPicker.save(picker);\n })\n\n return [path, currentState];\n }\n\n /**\n * Generates a unique identifier for the form.\n * @private\n * @returns {String} - Returns a unique identifier\n */\n _getUID() {\n return `filter-form-${new Date().getUTCMilliseconds()}-${Math.floor(Math.random() * 10000000)}`;\n }\n\n /**\n * Saves the changed filters on sessionStorage API.\n * @private\n * @param {string} pathWithQueryStrings - path with all the query strings for filter. To be used with backToListLink().\n * @returns {Void} - Returns nothing.\n */\n _saveFilters(pathWithQueryStrings) {\n if (!window.sessionStorage) {\n return;\n }\n\n const pathName = this.$form.attr(\"action\");\n sessionStorage.setItem(\"filteredParams\", JSON.stringify({[pathName]: pathWithQueryStrings}));\n }\n\n}\n","/**\n * Luxembourgish localisation\n */\n;(function(jQuery) {\n jQuery.fn.fdatepicker.dates.lb = {\n days: [\"Sonndeg\", \"Méindeg\", \"Dënschdeg\", \"Mëttwoch\", \"Donneschdeg\", \"Freideg\", \"Samschdeg\", \"Sonndeg\"],\n daysShort: [\"Son\", \"Méi\", \"Dën\", \"Mët\", \"Don\", \"Fre\", \"Sam\", \"Son\"],\n daysMin: [\"So\", \"Mé\", \"Dë\", \"Më\", \"Do\", \"Fr\", \"Sa\", \"So\"],\n months: [\"Januar\", \"Februar\", \"Mäerz\", \"Abrëll\", \"Mee\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\n monthsShort: [\"Jan\", \"Febr\", \"Mrz\", \"Abr\", \"Mee\", \"Jun\", \"Jul\", \"Aug\", \"Sept\", \"Okt\", \"Nov\", \"Dez\"],\n today: \"Haut\"\n };\n}(jQuery));\n","$(() => {\n $(\".gallery__container\").on(\"closed.zf.callout\", (event) => {\n $(event.target).remove();\n });\n});\n","/* eslint no-unused-vars: 0 */\nimport Tribute from \"src/decidim/vendor/tribute\"\n\n$(() => {\n const $hashtagContainer = $(\".js-hashtags\");\n const nodatafound = $hashtagContainer.attr(\"data-noresults\");\n\n let noMatchTemplate = null\n if (nodatafound) {\n noMatchTemplate = () => `
  • ${nodatafound}
  • `;\n }\n\n // Listener for the event triggered by quilljs\n let cursor = \"\";\n $hashtagContainer.on(\"quill-position\", function(event) {\n if (event.detail !== null) {\n // When replacing the text content after selecting a hashtag, we only need\n // to know the hashtag's start position as that is the point which we want\n // to replace.\n let quill = event.target.__quill;\n if (quill.getText(event.detail.index - 1, 1) === \"#\") {\n cursor = event.detail.index;\n }\n }\n });\n\n /* eslint no-use-before-define: [\"error\", { \"variables\": false }]*/\n let remoteSearch = function(text, cb) {\n $.post(\"/api\", {query: `{hashtags(name:\"${text}\") {name}}`}).\n\n then((response) => {\n let data = response.data.hashtags || {};\n cb(data)\n }).fail(function() {\n cb([])\n }).always(() => {\n // This function runs Tribute every single time you type something\n // So we must evalute DOM properties after each\n const $parent = $(tribute.current.element).parent()\n $parent.addClass(\"is-active\")\n\n // We need to move the container to the wrapper selected\n const $tribute = $parent.find(\".tribute-container\");\n // Remove the inline styles, relative to absolute positioning\n $tribute.removeAttr(\"style\");\n })\n };\n\n // tribute.js docs - http://github.com/zurb/tribute\n /* global Tribute*/\n let tribute = new Tribute({\n trigger: \"#\",\n values: function (text, cb) {\n remoteSearch(text, (hashtags) => cb(hashtags));\n },\n positionMenu: true,\n menuContainer: null,\n fillAttr: \"name\",\n noMatchTemplate: noMatchTemplate,\n lookup: (item) => item.name,\n selectTemplate: function(item) {\n if (typeof item === \"undefined\") {\n return null;\n }\n if (this.range.isContentEditable(this.current.element)) {\n // Check quill.js\n if ($(this.current.element).hasClass(\"ql-editor\")) {\n let editorContainer = $(this.current.element).parent().get(0);\n let quill = editorContainer.__quill;\n quill.insertText(cursor - 1, `#${item.original.name} `, Quill.sources.API);\n // cursor position + hashtag length + \"#\" sign + space\n let position = cursor + item.original.name.length + 2;\n\n let next = 0;\n if (quill.getLength() > position) {\n next = position\n } else {\n next = quill.getLength() - 1\n }\n // Workaround https://github.com/quilljs/quill/issues/731\n setTimeout(function () {\n quill.setSelection(next, 0);\n }, 500);\n\n return \"\"\n }\n return `#${item.original.name}`;\n }\n return `#${item.original.name}`;\n },\n menuItemTemplate: function(item) {\n let tpl = `${item.original.name}`;\n return tpl;\n }\n });\n\n // Tribute needs to be attached to the `.ql-editor` element as said at:\n // https://github.com/quilljs/quill/issues/1816\n //\n // For this reason we need to wait a bit for quill to initialize itself.\n setTimeout(function() {\n $hashtagContainer.each((index, item) => {\n let $qlEditor = $(\".ql-editor\", item);\n if ($qlEditor.length > 0) {\n tribute.attach($qlEditor);\n } else {\n tribute.attach(item);\n }\n });\n }, 1000);\n\n // DOM manipulation\n $hashtagContainer.on(\"focusin\", (event) => {\n // Set the parent container relative to the current element\n\n tribute.menuContainer = event.target.parentNode;\n });\n $hashtagContainer.on(\"focusout\", (event) => {\n let $parent = $(event.target).parent();\n\n if ($parent.hasClass(\"is-active\")) {\n $parent.removeClass(\"is-active\");\n }\n });\n $hashtagContainer.on(\"input\", (event) => {\n let $parent = $(event.target).parent();\n\n if (tribute.isActive) {\n // We need to move the container to the wrapper selected\n let $tribute = $(\".tribute-container\");\n $tribute.appendTo($parent);\n // Parent adaptation\n $parent.addClass(\"is-active\");\n } else {\n $parent.removeClass(\"is-active\");\n }\n });\n});\n","/* eslint no-unused-vars: 0 */\nimport Tribute from \"src/decidim/vendor/tribute\"\n\n$(() => {\n const $mentionContainer = $(\".js-mentions\");\n const nodatafound = $mentionContainer.attr(\"data-noresults\");\n\n let noMatchTemplate = null\n if (nodatafound) {\n noMatchTemplate = () => `
  • ${nodatafound}
  • `;\n }\n\n // Listener for the event triggered by quilljs\n let cursor = \"\";\n $mentionContainer.on(\"quill-position\", (event) => {\n if (event.detail !== null) {\n // When replacing the text content after selecting a hashtag, we only need\n // to know the hashtag's start position as that is the point which we want\n // to replace.\n let quill = event.target.__quill;\n if (quill.getText(event.detail.index - 1, 1) === \"@\") {\n cursor = event.detail.index;\n }\n }\n });\n\n // Returns a function, that, as long as it continues to be invoked, will not\n // be triggered. The function will be called after it stops being called for\n // N milliseconds\n /* eslint no-invalid-this: 0 */\n /* eslint consistent-this: 0 */\n /* eslint prefer-reflect: 0 */\n const debounce = function(callback, wait) {\n let timeout = null;\n return (...args) => {\n const context = this;\n clearTimeout(timeout);\n timeout = setTimeout(() => callback.apply(context, args), wait);\n };\n }\n\n /* eslint no-use-before-define: [\"error\", { \"variables\": false }]*/\n let remoteSearch = function(text, cb) {\n let query = `{users(filter:{wildcard:\"${text}\"}){nickname,name,avatarUrl,__typename,...on UserGroup{membersCount}}}`;\n $.post(\"/api\", {query: query}).\n then((response) => {\n let data = response.data.users || {};\n cb(data)\n }).fail(function() {\n cb([])\n }).always(() => {\n // This function runs Tribute every single time you type something\n // So we must evalute DOM properties after each\n const $parent = $(tribute.current.element).parent();\n $parent.addClass(\"is-active\");\n\n // We need to move the container to the wrapper selected\n const $tribute = $parent.find(\".tribute-container\");\n // Remove the inline styles, relative to absolute positioning\n $tribute.removeAttr(\"style\");\n })\n };\n\n // tribute.js docs - http://github.com/zurb/tribute\n /* global Tribute*/\n let tribute = new Tribute({\n trigger: \"@\",\n // avoid overloading the API if the user types too fast\n values: debounce(function (text, cb) {\n remoteSearch(text, (users) => cb(users));\n }, 250),\n positionMenu: true,\n menuContainer: null,\n allowSpaces: true,\n menuItemLimit: 5,\n fillAttr: \"nickname\",\n selectClass: \"highlight\",\n noMatchTemplate: noMatchTemplate,\n lookup: (item) => item.nickname + item.name,\n selectTemplate: function(item) {\n if (typeof item === \"undefined\") {\n return null;\n }\n if (this.range.isContentEditable(this.current.element)) {\n // Check quill.js\n if ($(this.current.element).hasClass(\"ql-editor\")) {\n let editorContainer = $(this.current.element).parent().get(0);\n let quill = editorContainer.__quill;\n quill.insertText(cursor - 1, `${item.original.nickname} `, Quill.sources.API);\n // cursor position + nickname length + \"@\" sign + space\n let position = cursor + item.original.nickname.length + 2\n\n let next = 0;\n if (quill.getLength() > position) {\n next = position\n } else {\n next = quill.getLength() - 1\n }\n // Workaround https://github.com/quilljs/quill/issues/731\n setTimeout(function () {\n quill.setSelection(next, 0);\n }, 500);\n\n return \"\"\n }\n return `${item.original.nickname}`;\n }\n return item.original.nickname;\n },\n menuItemTemplate: function(item) {\n let svg = \"\";\n if (window.Decidim && item.original.__typename === \"UserGroup\") {\n const iconsPath = window.Decidim.config.get(\"icons_path\");\n\n svg = `${item.original.membersCount}x `;\n }\n return `
    \n \"author-avatar\"\n ${item.original.nickname}\n ${item.original.name}\n ${svg}\n
    `;\n }\n });\n\n let setupEvents = function($element) {\n // DOM manipulation\n $element.on(\"focusin\", (event) => {\n // Set the parent container relative to the current element\n tribute.menuContainer = event.target.parentNode;\n });\n $element.on(\"focusout\", (event) => {\n let $parent = $(event.target).parent();\n\n if ($parent.hasClass(\"is-active\")) {\n $parent.removeClass(\"is-active\");\n }\n });\n $element.on(\"input\", (event) => {\n let $parent = $(event.target).parent();\n\n if (tribute.isActive) {\n // We need to move the container to the wrapper selected\n let $tribute = $(\".tribute-container\");\n $tribute.appendTo($parent);\n\n // Parent adaptation\n $parent.addClass(\"is-active\");\n } else {\n $parent.removeClass(\"is-active\");\n }\n });\n };\n\n setupEvents($mentionContainer);\n\n // This allows external libraries (like React) to use the component\n // by simply firing and event targeting the element where to attach Tribute\n $(document).on(\"attach-mentions-element\", (event, element) => {\n if (!element) {\n return;\n }\n tribute.attach(element);\n // Due a bug in Tribute, re-add menu to DOM if it has been removed\n // See https://github.com/zurb/tribute/issues/140\n if (tribute.menu && !document.body.contains(tribute.menu)) {\n tribute.range.getDocument().body.appendChild(tribute.menu);\n }\n setupEvents($(element));\n });\n\n // tribute.attach($mentionContainer);\n // Tribute needs to be attached to the `.ql-editor` element as said at:\n // https://github.com/quilljs/quill/issues/1816\n //\n // For this reason we need to wait a bit for quill to initialize itself.\n setTimeout(function() {\n $mentionContainer.each((index, item) => {\n let $qlEditor = $(\".ql-editor\", item);\n if ($qlEditor.length > 0) {\n tribute.attach($qlEditor);\n } else {\n tribute.attach(item);\n }\n });\n }, 1000);\n});\n\n","import \"bootstrap-tagsinput\"\n\n$(() => {\n const $tagContainer = $(\".js-tags-container\");\n\n // Initialize\n $tagContainer.tagsinput({\n tagClass: \"input__tag\",\n trimValue: true\n });\n\n});\n","import moment from \"moment\"\n\n$(() => {\n let sessionTimeOutEnabled = true;\n const $timeoutModal = $(\"#timeoutModal\");\n const timeoutInSeconds = parseInt($timeoutModal.data(\"session-timeout\"), 10);\n const secondsUntilTimeoutPath = $timeoutModal.data(\"seconds-until-timeout-path\");\n const heartbeatPath = $timeoutModal.data(\"heartbeat-path\");\n const interval = parseInt($timeoutModal.data(\"session-timeout-interval\"), 10);\n const preventTimeOutSeconds = $timeoutModal.data(\"prevent-timeout-seconds\");\n let endsAt = moment().add(timeoutInSeconds, \"seconds\");\n let lastAction = moment();\n const $continueSessionButton = $(\"#continueSession\");\n let lastActivityCheck = moment();\n // 5 * 60 seconds = 5 Minutes\n const activityCheckInterval = 5 * 60;\n const preventTimeOutUntil = moment().add(preventTimeOutSeconds, \"seconds\");\n\n // Ajax request is made at timeout_modal.html.erb\n $continueSessionButton.on(\"click\", () => {\n $timeoutModal.foundation(\"close\");\n // In admin panel we have to hide all overlays\n $(\".reveal-overlay\").css(\"display\", \"none\");\n lastActivityCheck = moment();\n })\n\n if (isNaN(interval)) {\n return;\n }\n if (!timeoutInSeconds) {\n return;\n }\n\n const disableSessionTimeout = () => {\n sessionTimeOutEnabled = false;\n }\n\n const enableSessionTimeout = () => {\n sessionTimeOutEnabled = true;\n }\n\n const setTimer = (secondsUntilExpiration) => {\n if (!secondsUntilExpiration) {\n return;\n }\n endsAt = moment().add(secondsUntilExpiration, \"seconds\");\n }\n\n const sessionTimeLeft = () => {\n return $.ajax({\n method: \"GET\",\n url: secondsUntilTimeoutPath,\n contentType: \"application/json\",\n headers: {\n \"X-CSRF-Token\": $(\"meta[name=csrf-token]\").attr(\"content\")\n }\n });\n }\n\n const heartbeat = () => {\n return $.ajax({\n method: \"POST\",\n url: heartbeatPath,\n contentType: \"application/javascript\"\n });\n }\n\n const userBeenActiveSince = (seconds) => {\n return (moment() - lastAction) / 1000 < seconds;\n }\n\n const exitInterval = setInterval(() => {\n const timeSinceLastActivityCheckInSeconds = Math.round((moment() - lastActivityCheck) / 1000);\n\n const popupOpen = $(\"#timeoutModal\").parent().css(\"display\") === \"block\";\n if (!popupOpen && timeSinceLastActivityCheckInSeconds >= activityCheckInterval) {\n lastActivityCheck = moment();\n if (userBeenActiveSince(activityCheckInterval)) {\n heartbeat();\n return;\n }\n }\n\n const timeRemaining = Math.round((endsAt - moment()) / 1000);\n if (timeRemaining > 170) {\n return;\n }\n\n if (moment() < preventTimeOutUntil) {\n heartbeat();\n return;\n }\n\n sessionTimeLeft().then((result) => {\n const secondsUntilSessionExpires = result.seconds_remaining;\n setTimer(secondsUntilSessionExpires);\n\n if (!sessionTimeOutEnabled) {\n heartbeat();\n } else if (secondsUntilSessionExpires <= 90) {\n $timeoutModal.find(\"#reveal-hidden-sign-out\")[0].click();\n } else if (secondsUntilSessionExpires <= 150) {\n $timeoutModal.foundation(\"open\");\n }\n });\n }, interval);\n\n $(document).mousemove(() => {\n lastAction = moment();\n })\n $(document).scroll(() => {\n lastAction = moment();\n })\n $(document).keypress(() => {\n lastAction = moment();\n })\n\n // Devise restarts its own timer on ajax requests,\n // so here we restart our.\n $(document).on(\"ajax:complete\", () => {\n setTimer(timeoutInSeconds);\n });\n\n $(document).ajaxComplete((_event, _xhr, settings) => {\n if (settings && settings.url === secondsUntilTimeoutPath) {\n return;\n }\n setTimer(timeoutInSeconds);\n });\n\n window.addEventListener(\"beforeunload\", () => {\n clearInterval(exitInterval);\n return;\n });\n\n window.Decidim.enableSessionTimeout = enableSessionTimeout\n window.Decidim.disableSessionTimeout = disableSessionTimeout\n});\n","/* eslint-disable */\n\n/* =========================================================\n * foundation-datepicker.js\n * Copyright 2015 Peter Beno, najlepsiwebdesigner@gmail.com, @benopeter\n * project website http://foundation-datepicker.peterbeno.com\n * ========================================================= */\n\n// This file is a modified version of the original file\n// See\n// - https://github.com/decidim/decidim/pull/1207\n// - https://github.com/decidim/decidim/pull/2512\n// - https://github.com/decidim/decidim/pull/3515\n\n!(function($) {\n\n function UTCDate() {\n return new Date(Date.UTC(...arguments));\n }\n\n function UTCToday() {\n let today = new Date();\n return UTCDate(today.getUTCFullYear(), today.getUTCMonth(), today.getUTCDate());\n }\n\n let Datepicker = function(element, options) {\n let that = this;\n\n this.element = $(element);\n this.autoShow = (options.autoShow == undefined ? true : options.autoShow);\n this.appendTo = options.appendTo || \"body\";\n this.closeButton = options.closeButton;\n this.language = options.language || this.element.data(\"date-language\") || \"en\";\n this.language = this.language in dates ? this.language : this.language.split(\"-\")[0]; // Check if \"de-DE\" style date is available, if not language should fallback to 2 letter code eg \"de\"\n this.language = this.language in dates ? this.language : \"en\";\n this.isRTL = dates[this.language].rtl || false;\n this.format = DPGlobal.parseFormat(options.format || this.element.data(\"date-format\") || dates[this.language].format || \"mm/dd/yyyy\");\n this.formatText = options.format || this.element.data(\"date-format\") || dates[this.language].format || \"mm/dd/yyyy\";\n this.isInline = false;\n this.isInput = this.element.is(\"input\");\n this.component = this.element.is(\".date\") ? this.element.find(\".prefix, .postfix\") : false;\n this.hasInput = this.component && this.element.find(\"input\").length;\n this.disableDblClickSelection = options.disableDblClickSelection;\n this.onRender = options.onRender || function() {};\n if (this.component && this.component.length === 0) {\n this.component = false;\n }\n this.linkField = options.linkField || this.element.data(\"link-field\") || false;\n this.linkFormat = DPGlobal.parseFormat(options.linkFormat || this.element.data(\"link-format\") || \"yyyy-mm-dd hh:ii:ss\");\n this.minuteStep = options.minuteStep || this.element.data(\"minute-step\") || 5;\n this.pickerPosition = options.pickerPosition || this.element.data(\"picker-position\") || \"bottom-right\";\n this.initialDate = options.initialDate || null;\n this.faCSSprefix = options.faCSSprefix || \"fa\";\n this.leftArrow = options.leftArrow || ``;\n this.rightArrow = options.rightArrow || ``;\n this.closeIcon = options.closeIcon || ``;\n\n\n this.minView = 0;\n if (\"minView\" in options) {\n this.minView = options.minView;\n } else if (\"minView\" in this.element.data()) {\n this.minView = this.element.data(\"min-view\");\n }\n this.minView = DPGlobal.convertViewMode(this.minView);\n\n this.maxView = DPGlobal.modes.length - 1;\n if (\"maxView\" in options) {\n this.maxView = options.maxView;\n } else if (\"maxView\" in this.element.data()) {\n this.maxView = this.element.data(\"max-view\");\n }\n this.maxView = DPGlobal.convertViewMode(this.maxView);\n\n this.startViewMode = \"month\";\n if (\"startView\" in options) {\n this.startViewMode = options.startView;\n } else if (\"startView\" in this.element.data()) {\n this.startViewMode = this.element.data(\"start-view\");\n }\n this.startViewMode = DPGlobal.convertViewMode(this.startViewMode);\n this.viewMode = this.startViewMode;\n\n if (!(\"minView\" in options) && !(\"maxView\" in options) && !(this.element.data(\"min-view\")) && !(this.element.data(\"max-view\"))) {\n this.pickTime = false;\n if (\"pickTime\" in options) {\n this.pickTime = options.pickTime;\n }\n if (this.pickTime == true) {\n this.minView = 0;\n this.maxView = 4;\n } else {\n this.minView = 2;\n this.maxView = 4;\n }\n }\n\n this.forceParse = true;\n if (\"forceParse\" in options) {\n this.forceParse = options.forceParse;\n } else if (\"dateForceParse\" in this.element.data()) {\n this.forceParse = this.element.data(\"date-force-parse\");\n }\n\n\n this.picker = $(DPGlobal.template(this.leftArrow, this.rightArrow, this.closeIcon)).\n appendTo(this.isInline ? this.element : this.appendTo).\n on({\n click: $.proxy(this.click, this),\n mousedown: $.proxy(this.mousedown, this)\n });\n if (this.closeButton) {\n this.picker.find(\"a.datepicker-close\").show();\n } else {\n this.picker.find(\"a.datepicker-close\").hide();\n }\n\n if (this.isInline) {\n this.picker.addClass(\"datepicker-inline\");\n } else {\n this.picker.addClass(\"datepicker-dropdown dropdown-menu\");\n }\n if (this.isRTL) {\n this.picker.addClass(\"datepicker-rtl\");\n\n this.picker.find(\".date-switch\").each(function() {\n $(this).parent().prepend($(this).siblings(\".next\"));\n $(this).parent().append($(this).siblings(\".prev\"));\n })\n this.picker.find(\".prev, .next\").toggleClass(\"prev next\");\n\n }\n $(document).on(\"mousedown\", function(e) {\n if (that.isInput && e.target === that.element[0]) {\n return;\n }\n\n // Clicked outside the datepicker, hide it\n if ($(e.target).closest(\".datepicker.datepicker-inline, .datepicker.datepicker-dropdown\").length === 0) {\n that.hide();\n }\n });\n\n this.autoclose = true;\n if (\"autoclose\" in options) {\n this.autoclose = options.autoclose;\n } else if (\"dateAutoclose\" in this.element.data()) {\n this.autoclose = this.element.data(\"date-autoclose\");\n }\n\n this.keyboardNavigation = true;\n if (\"keyboardNavigation\" in options) {\n this.keyboardNavigation = options.keyboardNavigation;\n } else if (\"dateKeyboardNavigation\" in this.element.data()) {\n this.keyboardNavigation = this.element.data(\"date-keyboard-navigation\");\n }\n\n this.todayBtn = (options.todayBtn || this.element.data(\"date-today-btn\") || false);\n this.todayHighlight = (options.todayHighlight || this.element.data(\"date-today-highlight\") || false);\n\n this.calendarWeeks = false;\n if (\"calendarWeeks\" in options) {\n this.calendarWeeks = options.calendarWeeks;\n } else if (\"dateCalendarWeeks\" in this.element.data()) {\n this.calendarWeeks = this.element.data(\"date-calendar-weeks\");\n }\n if (this.calendarWeeks)\n {this.picker.find(\"tfoot th.today\").\n attr(\"colspan\", function(i, val) {\n return parseInt(val) + 1;\n });}\n\n this.weekStart = ((options.weekStart || this.element.data(\"date-weekstart\") || dates[this.language].weekStart || 0) % 7);\n this.weekEnd = ((this.weekStart + 6) % 7);\n this.startDate = -Infinity;\n this.endDate = Infinity;\n this.daysOfWeekDisabled = [];\n this.datesDisabled = [];\n this.setStartDate(options.startDate || this.element.data(\"date-startdate\"));\n this.setEndDate(options.endDate || this.element.data(\"date-enddate\"));\n this.setDaysOfWeekDisabled(options.daysOfWeekDisabled || this.element.data(\"date-days-of-week-disabled\"));\n this.setDatesDisabled(options.datesDisabled || this.element.data(\"dates-disabled\"));\n\n if (this.initialDate != null) {\n this.date = this.viewDate = DPGlobal.parseDate(this.initialDate, this.format, this.language);\n this.setValue();\n }\n\n this.fillDow();\n this.fillMonths();\n this.update();\n\n this.showMode();\n\n if (this.isInline) {\n this.show();\n }\n\n this._attachEvents();\n };\n\n Datepicker.prototype = {\n constructor: Datepicker,\n\n _events: [],\n _attachEvents: function() {\n this._detachEvents();\n if (this.isInput) { // single input\n if (!this.keyboardNavigation) {\n this._events = [\n [this.element, {\n focus: (this.autoShow) ? $.proxy(this.show, this) : function() {}\n }]\n ];\n } else {\n this._events = [\n [this.element, {\n focus: (this.autoShow) ? $.proxy(this.show, this) : function() {},\n keyup: $.proxy(this.update, this),\n keydown: $.proxy(this.keydown, this),\n click: (this.element.attr(\"readonly\")) ? $.proxy(this.show, this) : function() {}\n }]\n ];\n }\n }\n else if (this.component && this.hasInput) { // component: input + button\n this._events = [\n // For components that are not readonly, allow keyboard nav\n [this.element.find(\"input\"), {\n focus: (this.autoShow) ? $.proxy(this.show, this) : function() {},\n keyup: $.proxy(this.update, this),\n keydown: $.proxy(this.keydown, this)\n }],\n [this.component, {\n click: $.proxy(this.show, this)\n }]\n ];\n } else if (this.element.is(\"div\")) { // inline datepicker\n this.isInline = true;\n } else {\n this._events = [\n [this.element, {\n click: $.proxy(this.show, this)\n }]\n ];\n }\n\n if (this.disableDblClickSelection) {\n this._events[this._events.length] = [\n this.element, {\n dblclick: function(e) {\n e.preventDefault();\n e.stopPropagation();\n $(this).blur()\n }\n }\n ];\n }\n\n for (var el, ev, i = 0; i < this._events.length; i++) {\n el = this._events[i][0];\n ev = this._events[i][1];\n el.on(ev);\n }\n },\n _detachEvents: function() {\n for (var el, ev, i = 0; i < this._events.length; i++) {\n el = this._events[i][0];\n ev = this._events[i][1];\n el.off(ev);\n }\n this._events = [];\n },\n\n show: function(e) {\n this.picker.show();\n this.height = this.component ? this.component.outerHeight() : this.element.outerHeight();\n this.update();\n this.place();\n $(window).on(\"resize\", $.proxy(this.place, this));\n if (e) {\n e.stopPropagation();\n e.preventDefault();\n }\n this.element.trigger({\n type: \"show\",\n date: this.date\n });\n },\n\n hide: function(e) {\n if (this.isInline) {return;}\n if (!this.picker.is(\":visible\")) {return;}\n this.picker.hide();\n $(window).off(\"resize\", this.place);\n this.viewMode = this.startViewMode;\n this.showMode();\n if (!this.isInput) {\n $(document).off(\"mousedown\", this.hide);\n }\n\n if (\n this.forceParse &&\n (\n this.isInput && this.element.val() ||\n this.hasInput && this.element.find(\"input\").val()\n )\n )\n {this.setValue();}\n this.element.trigger({\n type: \"hide\",\n date: this.date\n });\n },\n\n remove: function() {\n this._detachEvents();\n this.picker.remove();\n delete this.element.data().datepicker;\n },\n\n getDate: function() {\n let d = this.getUTCDate();\n return new Date(d.getTime() + (d.getTimezoneOffset() * 60000));\n },\n\n getUTCDate: function() {\n return this.date;\n },\n\n setDate: function(d) {\n this.setUTCDate(new Date(d.getTime() - (d.getTimezoneOffset() * 60000)));\n },\n\n setUTCDate: function(d) {\n this.date = d;\n this.setValue();\n },\n\n setValue: function() {\n let formatted = this.getFormattedDate();\n if (!this.isInput) {\n if (this.component) {\n this.element.find(\"input\").val(formatted);\n }\n this.element.data(\"date\", formatted);\n } else {\n this.element.val(formatted);\n }\n },\n\n getFormattedDate: function(format) {\n if (format === undefined)\n {format = this.format;}\n return DPGlobal.formatDate(this.date, format, this.language);\n },\n\n setStartDate: function(startDate) {\n this.startDate = startDate || -Infinity;\n if (this.startDate !== -Infinity) {\n this.startDate = DPGlobal.parseDate(this.startDate, this.format, this.language);\n }\n this.update();\n this.updateNavArrows();\n },\n\n setEndDate: function(endDate) {\n this.endDate = endDate || Infinity;\n if (this.endDate !== Infinity) {\n this.endDate = DPGlobal.parseDate(this.endDate, this.format, this.language);\n }\n this.update();\n this.updateNavArrows();\n },\n\n setDaysOfWeekDisabled: function(daysOfWeekDisabled) {\n this.daysOfWeekDisabled = daysOfWeekDisabled || [];\n if (!$.isArray(this.daysOfWeekDisabled)) {\n this.daysOfWeekDisabled = this.daysOfWeekDisabled.split(/,\\s*/);\n }\n this.daysOfWeekDisabled = $.map(this.daysOfWeekDisabled, function(d) {\n return parseInt(d, 10);\n });\n this.update();\n this.updateNavArrows();\n },\n\n setDatesDisabled: function(datesDisabled) {\n this.datesDisabled = datesDisabled || [];\n if (!$.isArray(this.datesDisabled)) {\n this.datesDisabled = this.datesDisabled.split(/,\\s*/);\n }\n this.datesDisabled = $.map(this.datesDisabled, function(d) {\n return DPGlobal.parseDate(d, this.format, this.language).valueOf();\n });\n this.update();\n this.updateNavArrows();\n },\n\n place: function() {\n if (this.isInline) {return;}\n let zIndexes = [];\n this.element.parents().map(function() {\n if ($(this).css(\"z-index\") != \"auto\") {\n zIndexes.push(parseInt($(this).css(\"z-index\")));\n }\n });\n let zIndex = zIndexes.sort(function(a, b) { return a - b; }).pop() + 10;\n let textbox = this.component ? this.component : this.element;\n let offset = textbox.offset();\n let height = textbox.outerHeight() + parseInt(textbox.css(\"margin-top\"));\n let width = textbox.outerWidth() + parseInt(textbox.css(\"margin-left\"));\n let fullOffsetTop = offset.top + height;\n let offsetLeft = offset.left;\n this.picker.removeClass(\"datepicker-top datepicker-bottom\");\n // can we show it on top?\n let canShowTop = ($(window).scrollTop() < offset.top - this.picker.outerHeight());\n let canShowBottom = (fullOffsetTop + this.picker.outerHeight()) < $(window).scrollTop() + $(window).height();\n // If the datepicker is going to be below the window, show it on top of the input if it fits\n if (!canShowBottom && canShowTop) {\n fullOffsetTop = offset.top - this.picker.outerHeight();\n this.picker.addClass(\"datepicker-top\");\n }\n else {\n // Scroll up if we cannot show it on bottom or top (for mobile devices)\n if (!canShowBottom) {$(window).scrollTop(offset.top);}\n this.picker.addClass(\"datepicker-bottom\");\n }\n\n // if the datepicker is going to go past the right side of the window, we want\n // to set the right position so the datepicker lines up with the textbox\n if (offset.left + this.picker.width() >= $(window).width()) {\n offsetLeft = (offset.left + width) - this.picker.width();\n }\n this.picker.css({\n top: fullOffsetTop,\n left: offsetLeft,\n zIndex: zIndex\n });\n },\n\n update: function() {\n let date,\n fromArgs = false;\n let currentVal = this.isInput ? this.element.val() : this.element.data(\"date\") || this.element.find(\"input\").val();\n if (arguments && arguments.length && (typeof arguments[0] === \"string\" || arguments[0] instanceof Date)) {\n date = arguments[0];\n fromArgs = true;\n }\n else {\n date = this.isInput ? this.element.val() : this.element.data(\"date\") || this.element.find(\"input\").val();\n }\n\n this.date = DPGlobal.parseDate(date, this.format, this.language);\n\n if (fromArgs) {\n this.setValue();\n } else if (currentVal == \"\") {\n this.element.trigger({\n type: \"changeDate\",\n date: null\n });\n }\n\n if (this.date < this.startDate) {\n this.viewDate = new Date(this.startDate.valueOf());\n } else if (this.date > this.endDate) {\n this.viewDate = new Date(this.endDate.valueOf());\n } else {\n this.viewDate = new Date(this.date.valueOf());\n }\n this.fill();\n },\n\n fillDow: function() {\n let dowCnt = this.weekStart,\n html = \"\";\n if (this.calendarWeeks) {\n let cell = ' ';\n html += cell;\n this.picker.find(\".datepicker-days thead tr:first-child\").prepend(cell);\n }\n while (dowCnt < this.weekStart + 7) {\n html += `${dates[this.language].daysMin[(dowCnt++) % 7]}`;\n }\n html += \"\";\n this.picker.find(\".datepicker-days thead\").append(html);\n },\n\n fillMonths: function() {\n let html = \"\",\n i = 0;\n while (i < 12) {\n html += `${dates[this.language].monthsShort[i++]}`;\n }\n this.picker.find(\".datepicker-months td\").html(html);\n },\n\n fill: function() {\n if (this.date == null || this.viewDate == null) {\n return;\n }\n\n let d = new Date(this.viewDate.valueOf()),\n year = d.getUTCFullYear(),\n month = d.getUTCMonth(),\n dayMonth = d.getUTCDate(),\n hours = d.getUTCHours(),\n minutes = d.getUTCMinutes(),\n startYear = this.startDate !== -Infinity ? this.startDate.getUTCFullYear() : -Infinity,\n startMonth = this.startDate !== -Infinity ? this.startDate.getUTCMonth() : -Infinity,\n endYear = this.endDate !== Infinity ? this.endDate.getUTCFullYear() : Infinity,\n endMonth = this.endDate !== Infinity ? this.endDate.getUTCMonth() : Infinity,\n currentDate = this.date && UTCDate(this.date.getUTCFullYear(), this.date.getUTCMonth(), this.date.getUTCDate()).valueOf(),\n today = new Date(),\n titleFormat = dates[this.language].titleFormat || dates.en.titleFormat;\n // this.picker.find('.datepicker-days thead th.date-switch')\n // .text(DPGlobal.formatDate(new UTCDate(year, month), titleFormat, this.language));\n\n this.picker.find(\".datepicker-days thead th:eq(1)\").\n text(`${dates[this.language].months[month]} ${year}`);\n this.picker.find(\".datepicker-hours thead th:eq(1)\").\n text(`${dayMonth} ${dates[this.language].months[month]} ${year}`);\n this.picker.find(\".datepicker-minutes thead th:eq(1)\").\n text(`${dayMonth} ${dates[this.language].months[month]} ${year}`);\n\n\n this.picker.find(\"tfoot th.today\").\n text(dates[this.language].today).\n toggle(this.todayBtn !== false);\n this.updateNavArrows();\n this.fillMonths();\n let prevMonth = UTCDate(year, month - 1, 28, 0, 0, 0, 0),\n day = DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth());\n prevMonth.setUTCDate(day);\n prevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.weekStart + 7) % 7);\n let nextMonth = new Date(prevMonth.valueOf());\n nextMonth.setUTCDate(nextMonth.getUTCDate() + 42);\n nextMonth = nextMonth.valueOf();\n let html = [];\n let clsName;\n while (prevMonth.valueOf() < nextMonth) {\n if (prevMonth.getUTCDay() == this.weekStart) {\n html.push(\"\");\n if (this.calendarWeeks) {\n // adapted from https://github.com/timrwood/moment/blob/master/moment.js#L128\n let a = new Date(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth(), prevMonth.getUTCDate() - prevMonth.getDay() + 10 - (this.weekStart && this.weekStart % 7 < 5 && 7)),\n b = new Date(a.getFullYear(), 0, 4),\n calWeek = ~~((a - b) / 864e5 / 7 + 1.5);\n html.push(`${calWeek}`);\n }\n }\n clsName = ` ${this.onRender(prevMonth)} `;\n if (prevMonth.getUTCFullYear() < year || (prevMonth.getUTCFullYear() == year && prevMonth.getUTCMonth() < month)) {\n clsName += \" old\";\n } else if (prevMonth.getUTCFullYear() > year || (prevMonth.getUTCFullYear() == year && prevMonth.getUTCMonth() > month)) {\n clsName += \" new\";\n }\n // Compare internal UTC date with local today, not UTC today\n if (this.todayHighlight &&\n prevMonth.getUTCFullYear() == today.getFullYear() &&\n prevMonth.getUTCMonth() == today.getMonth() &&\n prevMonth.getUTCDate() == today.getDate()) {\n clsName += \" today\";\n }\n if (currentDate && prevMonth.valueOf() == currentDate) {\n clsName += \" active\";\n }\n if (prevMonth.valueOf() < this.startDate || prevMonth.valueOf() > this.endDate ||\n $.inArray(prevMonth.getUTCDay(), this.daysOfWeekDisabled) !== -1 ||\n $.inArray(prevMonth.valueOf(), this.datesDisabled) !== -1) {\n clsName += \" disabled\";\n }\n html.push(`${prevMonth.getUTCDate()}`);\n if (prevMonth.getUTCDay() == this.weekEnd) {\n html.push(\"\");\n }\n prevMonth.setUTCDate(prevMonth.getUTCDate() + 1);\n }\n this.picker.find(\".datepicker-days tbody\").empty().append(html.join(\"\"));\n\n html = [];\n for (var i = 0; i < 24; i++) {\n var actual = UTCDate(year, month, dayMonth, i);\n clsName = \"\";\n // We want the previous hour for the startDate\n if ((actual.valueOf() + 3600000) < this.startDate || actual.valueOf() > this.endDate) {\n clsName += \" disabled\";\n } else if (hours == i) {\n clsName += \" active\";\n }\n html.push(`${i}:00`);\n }\n this.picker.find(\".datepicker-hours td\").html(html.join(\"\"));\n\n html = [];\n for (var i = 0; i < 60; i += this.minuteStep) {\n var actual = UTCDate(year, month, dayMonth, hours, i);\n clsName = \"\";\n if (actual.valueOf() < this.startDate || actual.valueOf() > this.endDate) {\n clsName += \" disabled\";\n } else if (Math.floor(minutes / this.minuteStep) == Math.floor(i / this.minuteStep)) {\n clsName += \" active\";\n }\n html.push(`${hours}:${i < 10 ? `0${i}` : i}`);\n }\n this.picker.find(\".datepicker-minutes td\").html(html.join(\"\"));\n\n\n let currentYear = this.date && this.date.getUTCFullYear();\n let months = this.picker.find(\".datepicker-months\").\n find(\"th:eq(1)\").\n text(year).\n end().\n find(\"span\").removeClass(\"active\");\n if (currentYear && currentYear == year) {\n months.eq(this.date.getUTCMonth()).addClass(\"active\");\n }\n if (year < startYear || year > endYear) {\n months.addClass(\"disabled\");\n }\n if (year == startYear) {\n months.slice(0, startMonth).addClass(\"disabled\");\n }\n if (year == endYear) {\n months.slice(endMonth + 1).addClass(\"disabled\");\n }\n\n html = \"\";\n year = parseInt(year / 10, 10) * 10;\n let yearCont = this.picker.find(\".datepicker-years\").\n find(\"th:eq(1)\").\n text(`${year}-${year + 9}`).\n end().\n find(\"td\");\n year -= 1;\n for (var i = -1; i < 11; i++) {\n html += ` endYear ? \" disabled\" : \"\"}\">${year}`;\n year += 1;\n }\n yearCont.html(html);\n },\n\n updateNavArrows: function() {\n let d = new Date(this.viewDate),\n year = d.getUTCFullYear(),\n month = d.getUTCMonth(),\n day = d.getUTCDate(),\n hour = d.getUTCHours();\n switch (this.viewMode) {\n case 0:\n if (this.startDate !== -Infinity && year <= this.startDate.getUTCFullYear() && month <= this.startDate.getUTCMonth() && day <= this.startDate.getUTCDate() && hour <= this.startDate.getUTCHours()) {\n this.picker.find(\".prev\").css({\n visibility: \"hidden\"\n });\n } else {\n this.picker.find(\".prev\").css({\n visibility: \"visible\"\n });\n }\n if (this.endDate !== Infinity && year >= this.endDate.getUTCFullYear() && month >= this.endDate.getUTCMonth() && day >= this.endDate.getUTCDate() && hour >= this.endDate.getUTCHours()) {\n this.picker.find(\".next\").css({\n visibility: \"hidden\"\n });\n } else {\n this.picker.find(\".next\").css({\n visibility: \"visible\"\n });\n }\n break;\n case 1:\n if (this.startDate !== -Infinity && year <= this.startDate.getUTCFullYear() && month <= this.startDate.getUTCMonth() && day <= this.startDate.getUTCDate()) {\n this.picker.find(\".prev\").css({\n visibility: \"hidden\"\n });\n } else {\n this.picker.find(\".prev\").css({\n visibility: \"visible\"\n });\n }\n if (this.endDate !== Infinity && year >= this.endDate.getUTCFullYear() && month >= this.endDate.getUTCMonth() && day >= this.endDate.getUTCDate()) {\n this.picker.find(\".next\").css({\n visibility: \"hidden\"\n });\n } else {\n this.picker.find(\".next\").css({\n visibility: \"visible\"\n });\n }\n break;\n case 2:\n if (this.startDate !== -Infinity && year <= this.startDate.getUTCFullYear() && month <= this.startDate.getUTCMonth()) {\n this.picker.find(\".prev\").css({\n visibility: \"hidden\"\n });\n } else {\n this.picker.find(\".prev\").css({\n visibility: \"visible\"\n });\n }\n if (this.endDate !== Infinity && year >= this.endDate.getUTCFullYear() && month >= this.endDate.getUTCMonth()) {\n this.picker.find(\".next\").css({\n visibility: \"hidden\"\n });\n } else {\n this.picker.find(\".next\").css({\n visibility: \"visible\"\n });\n }\n break;\n case 3:\n case 4:\n if (this.startDate !== -Infinity && year <= this.startDate.getUTCFullYear()) {\n this.picker.find(\".prev\").css({\n visibility: \"hidden\"\n });\n } else {\n this.picker.find(\".prev\").css({\n visibility: \"visible\"\n });\n }\n if (this.endDate !== Infinity && year >= this.endDate.getUTCFullYear()) {\n this.picker.find(\".next\").css({\n visibility: \"hidden\"\n });\n } else {\n this.picker.find(\".next\").css({\n visibility: \"visible\"\n });\n }\n break;\n }\n },\n\n click: function(e) {\n e.stopPropagation();\n e.preventDefault();\n\n if ($(e.target).hasClass(\"datepicker-close\") || $(e.target).parent().hasClass(\"datepicker-close\")) {\n this.hide();\n }\n\n let target = $(e.target).closest(\"span, td, th\");\n if (target.length == 1) {\n if (target.is(\".disabled\")) {\n this.element.trigger({\n type: \"outOfRange\",\n date: this.viewDate,\n startDate: this.startDate,\n endDate: this.endDate\n });\n return;\n }\n\n switch (target[0].nodeName.toLowerCase()) {\n case \"th\":\n switch (target[0].className) {\n case \"date-switch\":\n this.showMode(1);\n break;\n case \"prev\":\n case \"next\":\n var dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className == \"prev\" ? -1 : 1);\n switch (this.viewMode) {\n case 0:\n this.viewDate = this.moveHour(this.viewDate, dir);\n break;\n case 1:\n this.viewDate = this.moveDate(this.viewDate, dir);\n break;\n case 2:\n this.viewDate = this.moveMonth(this.viewDate, dir);\n break;\n case 3:\n case 4:\n this.viewDate = this.moveYear(this.viewDate, dir);\n break;\n }\n this.fill();\n break;\n case \"today\":\n var date = new Date();\n date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds());\n\n this.viewMode = this.startViewMode;\n this.showMode(0);\n this._setDate(date);\n break;\n }\n break;\n case \"span\":\n if (!target.is(\".disabled\")) {\n if (target.is(\".month\")) {\n if (this.minView === 3) {\n var month = target.parent().find(\"span\").index(target) || 0;\n var year = this.viewDate.getUTCFullYear(),\n day = 1,\n hours = this.viewDate.getUTCHours(),\n minutes = this.viewDate.getUTCMinutes(),\n seconds = this.viewDate.getUTCSeconds();\n this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));\n } else {\n this.viewDate.setUTCDate(1);\n var month = target.parent().find(\"span\").index(target);\n this.viewDate.setUTCMonth(month);\n this.element.trigger({\n type: \"changeMonth\",\n date: this.viewDate\n });\n }\n } else if (target.is(\".year\")) {\n if (this.minView === 4) {\n var year = parseInt(target.text(), 10) || 0;\n var month = 0,\n day = 1,\n hours = this.viewDate.getUTCHours(),\n minutes = this.viewDate.getUTCMinutes(),\n seconds = this.viewDate.getUTCSeconds();\n this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));\n } else {\n this.viewDate.setUTCDate(1);\n var year = parseInt(target.text(), 10) || 0;\n this.viewDate.setUTCFullYear(year);\n this.element.trigger({\n type: \"changeYear\",\n date: this.viewDate\n });\n }\n } else if (target.is(\".hour\")) {\n var hours = parseInt(target.text(), 10) || 0;\n var year = this.viewDate.getUTCFullYear(),\n month = this.viewDate.getUTCMonth(),\n day = this.viewDate.getUTCDate(),\n minutes = this.viewDate.getUTCMinutes(),\n seconds = this.viewDate.getUTCSeconds();\n this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));\n } else if (target.is(\".minute\")) {\n var minutes = parseInt(target.text().substr(target.text().indexOf(\":\") + 1), 10) || 0;\n var year = this.viewDate.getUTCFullYear(),\n month = this.viewDate.getUTCMonth(),\n day = this.viewDate.getUTCDate(),\n hours = this.viewDate.getUTCHours(),\n seconds = this.viewDate.getUTCSeconds();\n this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));\n }\n\n\n if (this.viewMode != 0) {\n\n\n var oldViewMode = this.viewMode;\n this.showMode(-1);\n this.fill();\n if (oldViewMode == this.viewMode && this.autoclose) {\n this.hide();\n }\n } else {\n this.fill();\n if (this.autoclose) {\n this.hide();\n }\n }\n }\n break;\n case \"td\":\n\n\n if (target.is(\".day\") && !target.is(\".disabled\")) {\n var day = parseInt(target.text(), 10) || 1;\n var year = this.viewDate.getUTCFullYear(),\n month = this.viewDate.getUTCMonth(),\n hours = this.viewDate.getUTCHours(),\n minutes = this.viewDate.getUTCMinutes(),\n seconds = this.viewDate.getUTCSeconds();\n if (target.is(\".old\")) {\n if (month === 0) {\n month = 11;\n year -= 1;\n } else {\n month -= 1;\n }\n } else if (target.is(\".new\")) {\n if (month == 11) {\n month = 0;\n year += 1;\n } else {\n month += 1;\n }\n }\n this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));\n }\n\n\n var oldViewMode = this.viewMode;\n\n\n this.showMode(-1);\n\n\n this.fill();\n if (oldViewMode == this.viewMode && this.autoclose) {\n this.hide();\n }\n break;\n }\n }\n },\n\n _setDate: function(date, which) {\n\n if (!which || which == \"date\")\n {this.date = date;}\n if (!which || which == \"view\")\n {this.viewDate = date;}\n this.fill();\n this.setValue();\n this.element.trigger({\n type: \"changeDate\",\n date: this.date\n });\n let element;\n if (this.isInput) {\n element = this.element;\n } else if (this.component) {\n element = this.element.find(\"input\");\n }\n if (element) {\n element.change();\n if (this.autoclose && (!which || which == \"date\")) {\n // this.hide();\n }\n }\n },\n\n moveHour: function(date, dir) {\n if (!dir) {return date;}\n let new_date = new Date(date.valueOf());\n dir = dir > 0 ? 1 : -1;\n new_date.setUTCHours(new_date.getUTCHours() + dir);\n return new_date;\n },\n\n moveDate: function(date, dir) {\n if (!dir) {return date;}\n let new_date = new Date(date.valueOf());\n dir = dir > 0 ? 1 : -1;\n new_date.setUTCDate(new_date.getUTCDate() + dir);\n return new_date;\n },\n\n moveMonth: function(date, dir) {\n if (!dir) {return date;}\n let new_date = new Date(date.valueOf()),\n day = new_date.getUTCDate(),\n month = new_date.getUTCMonth(),\n mag = Math.abs(dir),\n new_month, test;\n dir = dir > 0 ? 1 : -1;\n if (mag == 1) {\n test = dir == -1\n // If going back one month, make sure month is not current month\n // (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)\n ? function() {\n return new_date.getUTCMonth() == month;\n }\n // If going forward one month, make sure month is as expected\n // (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)\n : function() {\n return new_date.getUTCMonth() != new_month;\n };\n new_month = month + dir;\n new_date.setUTCMonth(new_month);\n // Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11\n if (new_month < 0 || new_month > 11)\n {new_month = (new_month + 12) % 12;}\n } else {\n // For magnitudes >1, move one month at a time...\n for (let i = 0; i < mag; i++)\n // ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...\n {new_date = this.moveMonth(new_date, dir);}\n // ...then reset the day, keeping it in the new month\n new_month = new_date.getUTCMonth();\n new_date.setUTCDate(day);\n test = function() {\n return new_month != new_date.getUTCMonth();\n };\n }\n // Common date-resetting loop -- if date is beyond end of month, make it\n // end of month\n while (test()) {\n new_date.setUTCDate(--day);\n new_date.setUTCMonth(new_month);\n }\n return new_date;\n },\n\n moveYear: function(date, dir) {\n return this.moveMonth(date, dir * 12);\n },\n\n dateWithinRange: function(date) {\n return date >= this.startDate && date <= this.endDate;\n },\n\n keydown: function(e) {\n if (!this.keyboardNavigation) {\n return true;\n }\n if (this.picker.is(\":not(:visible)\")) {\n if (e.keyCode == 27) // allow escape to hide and re-show picker\n {this.show();}\n return;\n }\n let dateChanged = false,\n day, dir, month,\n newDate, newViewDate;\n switch (e.keyCode) {\n case 27: // escape\n this.hide();\n e.preventDefault();\n break;\n case 37: // left\n case 39: // right\n if (!this.keyboardNavigation) {break;}\n dir = e.keyCode == 37 ? -1 : 1;\n if (e.ctrlKey) {\n newDate = this.moveYear(this.date, dir);\n newViewDate = this.moveYear(this.viewDate, dir);\n } else if (e.shiftKey) {\n newDate = this.moveMonth(this.date, dir);\n newViewDate = this.moveMonth(this.viewDate, dir);\n } else {\n newDate = new Date(this.date.valueOf());\n newDate.setUTCDate(this.date.getUTCDate() + dir);\n newViewDate = new Date(this.viewDate.valueOf());\n newViewDate.setUTCDate(this.viewDate.getUTCDate() + dir);\n }\n if (this.dateWithinRange(newDate)) {\n this.date = newDate;\n this.viewDate = newViewDate;\n this.setValue();\n this.update();\n e.preventDefault();\n dateChanged = true;\n }\n break;\n case 38: // up\n case 40: // down\n if (!this.keyboardNavigation) {break;}\n dir = e.keyCode == 38 ? -1 : 1;\n if (e.ctrlKey) {\n newDate = this.moveYear(this.date, dir);\n newViewDate = this.moveYear(this.viewDate, dir);\n } else if (e.shiftKey) {\n newDate = this.moveMonth(this.date, dir);\n newViewDate = this.moveMonth(this.viewDate, dir);\n } else {\n newDate = new Date(this.date.valueOf());\n newDate.setUTCDate(this.date.getUTCDate() + dir * 7);\n newViewDate = new Date(this.viewDate.valueOf());\n newViewDate.setUTCDate(this.viewDate.getUTCDate() + dir * 7);\n }\n if (this.dateWithinRange(newDate)) {\n this.date = newDate;\n this.viewDate = newViewDate;\n this.setValue();\n this.update();\n e.preventDefault();\n dateChanged = true;\n }\n break;\n case 13: // enter\n this.hide();\n e.preventDefault();\n break;\n case 9: // tab\n this.hide();\n break;\n }\n if (dateChanged) {\n this.element.trigger({\n type: \"changeDate\",\n date: this.date\n });\n let element;\n if (this.isInput) {\n element = this.element;\n } else if (this.component) {\n element = this.element.find(\"input\");\n }\n if (element) {\n element.change();\n }\n }\n },\n\n showMode: function(dir) {\n\n if (dir) {\n let newViewMode = Math.max(0, Math.min(DPGlobal.modes.length - 1, this.viewMode + dir));\n if (newViewMode >= this.minView && newViewMode <= this.maxView) {\n this.viewMode = newViewMode;\n }\n }\n\n /*\n vitalets: fixing bug of very special conditions:\n jquery 1.7.1 + webkit + show inline datepicker in bootstrap popover.\n Method show() does not set display css correctly and datepicker is not shown.\n Changed to .css('display', 'block') solve the problem.\n See https://github.com/vitalets/x-editable/issues/37\n\n In jquery 1.7.2+ everything works fine.\n */\n // this.picker.find('>div').hide().filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName).show();\n this.picker.find(\">div\").hide().filter(`.datepicker-${DPGlobal.modes[this.viewMode].clsName}`).css(\"display\", \"block\");\n this.updateNavArrows();\n },\n\n changeViewDate: function(date) {\n this.date = date;\n this.viewDate = date;\n this.fill();\n },\n\n reset: function(e) {\n this._setDate(null, \"date\");\n }\n };\n\n $.fn.fdatepicker = function(option) {\n let args = Array(...arguments);\n args.shift();\n return this.each(function() {\n let $this = $(this),\n data = $this.data(\"datepicker\"),\n options = typeof option === \"object\" && option;\n if (!data) {\n $this.data(\"datepicker\", (data = new Datepicker(this, $.extend({}, $.fn.fdatepicker.defaults, options))));\n }\n if (typeof option === \"string\" && typeof data[option] === \"function\") {\n data[option](...args);\n }\n });\n };\n\n $.fn.fdatepicker.defaults = {\n onRender: function(date) {\n return \"\";\n }\n };\n $.fn.fdatepicker.Constructor = Datepicker;\n var dates = $.fn.fdatepicker.dates = {\n \"en\": {\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\"],\n daysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"],\n daysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n monthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n today: \"Today\",\n titleFormat: \"MM yyyy\"\n }\n };\n\n var DPGlobal = {\n modes: [{\n clsName: \"minutes\",\n navFnc: \"Hours\",\n navStep: 1\n }, {\n clsName: \"hours\",\n navFnc: \"Date\",\n navStep: 1\n }, {\n clsName: \"days\",\n navFnc: \"Month\",\n navStep: 1\n }, {\n clsName: \"months\",\n navFnc: \"FullYear\",\n navStep: 1\n }, {\n clsName: \"years\",\n navFnc: \"FullYear\",\n navStep: 10\n }],\n isLeapYear: function(year) {\n return (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0));\n },\n getDaysInMonth: function(year, month) {\n return [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];\n },\n validParts: /hh?|ii?|ss?|dd?|mm?|MM?|yy(?:yy)?/g,\n nonpunctuation: /[^ -\\/:-@\\[\\u3400-\\u9fff-`{-~\\t\\n\\r]+/g,\n parseFormat: function(format) {\n // IE treats \\0 as a string end in inputs (truncating the value),\n // so it's a bad format delimiter, anyway\n let separators = format.replace(this.validParts, \"\\0\").split(\"\\0\"),\n parts = format.match(this.validParts);\n if (!separators || !separators.length || !parts || parts.length === 0) {\n throw new Error(\"Invalid date format.\");\n }\n this.formatText = format;\n return {\n separators: separators,\n parts: parts\n };\n },\n parseDate: function(date, format, language) {\n if (date instanceof Date) {return new Date(date.valueOf() - date.getTimezoneOffset() * 60000);}\n if (/^\\d{4}\\-\\d{1,2}\\-\\d{1,2}$/.test(date)) {\n format = this.parseFormat(\"yyyy-mm-dd\");\n }\n if (/^\\d{4}\\-\\d{1,2}\\-\\d{1,2}[T ]\\d{1,2}\\:\\d{1,2}$/.test(date)) {\n format = this.parseFormat(\"yyyy-mm-dd hh:ii\");\n }\n if (/^\\d{4}\\-\\d{1,2}\\-\\d{1,2}[T ]\\d{1,2}\\:\\d{1,2}\\:\\d{1,2}[Z]{0,1}$/.test(date)) {\n format = this.parseFormat(\"yyyy-mm-dd hh:ii:ss\");\n }\n if (/^[-+]\\d+[dmwy]([\\s,]+[-+]\\d+[dmwy])*$/.test(date)) {\n var part_re = /([-+]\\d+)([dmwy])/,\n parts = date.match(/([-+]\\d+)([dmwy])/g),\n part, dir;\n date = new Date();\n for (var i = 0; i < parts.length; i++) {\n part = part_re.exec(parts[i]);\n dir = parseInt(part[1]);\n switch (part[2]) {\n case \"d\":\n date.setUTCDate(date.getUTCDate() + dir);\n break;\n case \"m\":\n date = Datetimepicker.prototype.moveMonth.call(Datetimepicker.prototype, date, dir);\n break;\n case \"w\":\n date.setUTCDate(date.getUTCDate() + dir * 7);\n break;\n case \"y\":\n date = Datetimepicker.prototype.moveYear.call(Datetimepicker.prototype, date, dir);\n break;\n }\n }\n return UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());\n }\n var parts = date && date.match(this.nonpunctuation) || [],\n date = new Date(),\n parsed = {},\n setters_order = [\"hh\", \"h\", \"ii\", \"i\", \"ss\", \"s\", \"yyyy\", \"yy\", \"M\", \"MM\", \"m\", \"mm\", \"d\", \"dd\"],\n setters_map = {\n hh: function(d, v) {\n return d.setUTCHours(v);\n },\n h: function(d, v) {\n return d.setUTCHours(v);\n },\n ii: function(d, v) {\n return d.setUTCMinutes(v);\n },\n i: function(d, v) {\n return d.setUTCMinutes(v);\n },\n ss: function(d, v) {\n return d.setUTCSeconds(v);\n },\n s: function(d, v) {\n return d.setUTCSeconds(v);\n },\n yyyy: function(d, v) {\n return d.setUTCFullYear(v);\n },\n yy: function(d, v) {\n return d.setUTCFullYear(2000 + v);\n },\n m: function(d, v) {\n v -= 1;\n while (v < 0) {v += 12;}\n v %= 12;\n d.setUTCMonth(v);\n while (d.getUTCMonth() != v)\n {d.setUTCDate(d.getUTCDate() - 1);}\n return d;\n },\n d: function(d, v) {\n return d.setUTCDate(v);\n }\n },\n val, filtered, part;\n setters_map.M = setters_map.MM = setters_map.mm = setters_map.m;\n setters_map.dd = setters_map.d;\n date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0); // date.getHours(), date.getMinutes(), date.getSeconds());\n if (parts.length == format.parts.length) {\n for (var i = 0, cnt = format.parts.length; i < cnt; i++) {\n val = parseInt(parts[i], 10);\n part = format.parts[i];\n if (isNaN(val)) {\n switch (part) {\n case \"MM\":\n filtered = $(dates[language].months).filter(function() {\n let m = this.slice(0, parts[i].length),\n p = parts[i].slice(0, m.length);\n return m == p;\n });\n val = $.inArray(filtered[0], dates[language].months) + 1;\n break;\n case \"M\":\n filtered = $(dates[language].monthsShort).filter(function() {\n let m = this.slice(0, parts[i].length),\n p = parts[i].slice(0, m.length);\n return m == p;\n });\n val = $.inArray(filtered[0], dates[language].monthsShort) + 1;\n break;\n }\n }\n parsed[part] = val;\n }\n for (var i = 0, s; i < setters_order.length; i++) {\n s = setters_order[i];\n if (s in parsed && !isNaN(parsed[s]))\n {setters_map[s](date, parsed[s])}\n }\n }\n return date;\n },\n formatDate: function(date, format, language) {\n if (date == null) {\n return \"\";\n }\n let val = {\n h: date.getUTCHours(),\n i: date.getUTCMinutes(),\n s: date.getUTCSeconds(),\n d: date.getUTCDate(),\n m: date.getUTCMonth() + 1,\n M: dates[language].monthsShort[date.getUTCMonth()],\n MM: dates[language].months[date.getUTCMonth()],\n yy: date.getUTCFullYear().toString().substring(2),\n yyyy: date.getUTCFullYear()\n };\n val.hh = (val.h < 10 ? \"0\" : \"\") + val.h;\n val.ii = (val.i < 10 ? \"0\" : \"\") + val.i;\n val.ss = (val.s < 10 ? \"0\" : \"\") + val.s;\n val.dd = (val.d < 10 ? \"0\" : \"\") + val.d;\n val.mm = (val.m < 10 ? \"0\" : \"\") + val.m;\n var date = [],\n seps = $.extend([], format.separators);\n for (let i = 0, cnt = format.parts.length; i < cnt; i++) {\n if (seps.length)\n {date.push(seps.shift())}\n date.push(val[format.parts[i]]);\n }\n return date.join(\"\");\n },\n convertViewMode: function(viewMode) {\n switch (viewMode) {\n case 4:\n case \"decade\":\n viewMode = 4;\n break;\n case 3:\n case \"year\":\n viewMode = 3;\n break;\n case 2:\n case \"month\":\n viewMode = 2;\n break;\n case 1:\n case \"day\":\n viewMode = 1;\n break;\n case 0:\n case \"hour\":\n viewMode = 0;\n break;\n }\n\n return viewMode;\n },\n headTemplate: function(leftArrow, rightArrow) {return (`${\"\" +\n \"\" +\n ''}${leftArrow}` +\n \"\" +\n `${rightArrow}` +\n \"\" +\n \"\")},\n contTemplate: '',\n footTemplate: ''\n };\n DPGlobal.template = function(leftArrow, rightArrow, closeIcon) {return (`${'
    ' +\n '
    ' +\n ''}${\n DPGlobal.headTemplate(leftArrow, rightArrow)\n }${DPGlobal.contTemplate\n }${DPGlobal.footTemplate\n }
    ` +\n \"
    \" +\n \"
    \" +\n `${\n DPGlobal.headTemplate(leftArrow, rightArrow)\n }${DPGlobal.contTemplate\n }${DPGlobal.footTemplate\n }
    ` +\n \"
    \" +\n \"
    \" +\n `${\n DPGlobal.headTemplate(leftArrow, rightArrow)\n }${\n DPGlobal.footTemplate\n }
    ` +\n \"
    \" +\n \"
    \" +\n `${\n DPGlobal.headTemplate(leftArrow, rightArrow)\n }${DPGlobal.contTemplate\n }${DPGlobal.footTemplate\n }
    ` +\n \"
    \" +\n \"
    \" +\n `${\n DPGlobal.headTemplate(leftArrow, rightArrow)\n }${DPGlobal.contTemplate\n }${DPGlobal.footTemplate\n }
    ` +\n \"
    \" +\n `${closeIcon}` +\n \"
    \")};\n\n $.fn.fdatepicker.DPGlobal = DPGlobal;\n\n}(window.jQuery));\n","/* eslint-disable require-jsdoc, no-console */\n\nimport areachart from \"src/decidim/vizzs/areachart\"\n\n$(() => {\n\n const metricsData = {};\n const metricsContainer = {};\n const metricsParams = {};\n\n const query = () => {\n let metricsQuery = `metrics(names: ${metricsParams.names}, space_type: \"${metricsParams.spaceType}\", space_id: ${metricsParams.spaceId}) { name history { key value } }`;\n return {query: `{ ${metricsQuery} }`};\n }\n\n const parameterize = (metrics) => {\n metricsParams.names = JSON.stringify(metrics || []);\n metricsParams.spaceType = $(\"#metrics #metrics-space_type\").val() || null;\n metricsParams.spaceId = $(\"#metrics #metrics-space_id\").val() || null;\n }\n\n const fetch = (metrics) => $.post(\"/api\", query(metrics));\n\n const downloadMetricData = (event) => {\n event.preventDefault();\n let metricName = $(event.target).parents(\".metric-downloader\").data(\"metric\");\n let csvContent = \"data:text/csv;charset=utf-8,\";\n\n csvContent += \"key,value\\r\\n\";\n metricsData[metricName].forEach((metricData) => {\n csvContent += `${metricData.key},${metricData.value}\\r\\n`;\n });\n\n // Required for FF\n let link = document.createElement(\"a\");\n link.setAttribute(\"href\", encodeURI(csvContent));\n link.setAttribute(\"download\", `${metricName}_metric_data.csv`);\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n\n $(\".metric-chart:visible\").each((_index, container) => {\n metricsContainer[$(container).data(\"metric\")] = container;\n });\n $(\".metric-downloader\").each((_index, container) => {\n container.onclick = downloadMetricData;\n });\n\n if (!$.isEmptyObject(metricsContainer)) {\n parameterize(Object.keys(metricsContainer))\n fetch().then((response) => {\n if (response.data) {\n $.each(response.data.metrics, (_index, metricData) => {\n let container = metricsContainer[metricData.name];\n if (metricData.history.length === 0) {\n $(container).remove();\n return;\n }\n let info = $(container).data(\"info\");\n metricsData[metricData.name] = $.extend(true, [], metricData.history);\n areachart({\n container: `#${container.id}`,\n data: metricData.history,\n title: info.title,\n objectName: info.object,\n ...$(container).data()\n });\n });\n } else if (response.errors) {\n console.log(\"Something wrong happened when fetching metrics:\");\n $.each(response.errors, (_index, error) => {\n console.log(error.message);\n });\n $(\"#metrics\").remove();\n }\n }).fail((err) => {\n console.log(`Something wrong happened when fetching metrics: ${err.statusText}`);\n $(\"#metrics\").remove();\n });\n }\n});\n","/* global d3 */\n/* eslint-disable require-jsdoc, id-length, no-undefined, no-unused-vars, multiline-ternary, no-ternary, no-nested-ternary, no-invalid-this */\n/* eslint prefer-reflect: [\"error\", { \"exceptions\": [\"call\"] }] */\n/* eslint dot-location: [\"error\", \"property\"] */\n/* eslint no-unused-vars: 0 */\n\nimport * as d3 from \"d3\";\n\n// lib\nexport default function areachart(opts = {}) {\n\n const parseData = (data) => {\n // format the data\n data.forEach((d) => {\n d.key = d3.isoParse(d.key)\n d.value = Number(d.value)\n });\n\n // order by date\n return data.sort((x, y) => d3.ascending(x.key, y.key))\n }\n\n // OPTIONAL: Helper function to accumulates all data values\n const aggregate = (agg) => agg.map((item, index, array) => {\n if (index > 0) {\n item.value += array[index - 1].value\n }\n return item\n })\n\n // parse opts\n let data = parseData(opts.data)\n let title = opts.title\n let objectName = opts.objectName || \"\"\n let container = d3.select(opts.container)\n let showAxis = opts.axis || false\n let ratio = (opts.ratio || \"\").split(\":\").reduce((a, b) => a / b) || (4 / 3)\n let showTooltip = Object.is(opts.tip, undefined) ? true : opts.tip\n let cumulative = opts.agg || false\n\n if (cumulative) {\n data = aggregate(data)\n }\n\n // set the dimensions and margins of the graph\n let margin = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n\n let width = Number(container.node().getBoundingClientRect().width) - margin.left - margin.right\n let height = (width / ratio) - margin.top - margin.bottom\n let titlePadding = d3.min([width / 10, 32])\n\n // set the ranges\n let x = d3.scaleTime().range([0, width]);\n let y = d3.scaleLinear().range([height, 0]);\n\n // define the area\n let area = d3.area()\n .x((d) => x(d.key))\n .y0(height)\n .y1((d) => y(d.value));\n\n // define the line\n let valueline = d3.line()\n .x((d) => x(d.key))\n .y((d) => y(d.value));\n\n let svg = container.append(\"svg\")\n .attr(\"width\", width + margin.left + margin.right)\n .attr(\"height\", height + margin.top + margin.bottom)\n .append(\"g\")\n .attr(\"transform\", `translate(${margin.left},${margin.top})`);\n\n // scale the range of the data\n x.domain(d3.extent(data, (d) => d.key));\n y.domain([0, d3.max(data, (d) => d.value)]).nice();\n\n // add the valueline path.\n let topLine = svg.append(\"path\")\n .data([data])\n .attr(\"class\", \"line\")\n .attr(\"d\", valueline)\n\n // add the area\n svg.append(\"path\")\n .data([data])\n .attr(\"class\", \"area\")\n .attr(\"d\", area)\n\n if (showTooltip) {\n // tooltip\n let circle = svg.append(\"circle\")\n .attr(\"class\", \"circle\")\n .attr(\"r\", 6)\n .style(\"display\", \"none\")\n\n let tooltip = d3.select(\"body\").append(\"div\")\n .attr(\"id\", `${container.node().id}-tooltip`)\n .attr(\"class\", \"chart-tooltip\")\n .style(\"opacity\", 0)\n\n svg\n .on(\"mouseover\", () => {\n circle.style(\"display\", null)\n tooltip.style(\"opacity\", 1)\n })\n .on(\"mouseout\", () => {\n circle.style(\"display\", \"none\")\n tooltip.style(\"opacity\", 0)\n })\n .on(\"mousemove\", function() {\n let x0 = x.invert(d3.mouse(this)[0])\n let i = d3.bisector((d) => d.key).left(data, x0, 1)\n let d0 = data[i - 1]\n let d1 = data[i]\n let d = (x0 - d0.key > d1.key - x0) ? d1 : d0\n\n // svg position relative to document\n let coords = {\n x: window.pageXOffset + container.node().getBoundingClientRect().left,\n y: window.pageYOffset + container.node().getBoundingClientRect().top\n }\n\n let tooltipContent = `\n
    \n ${d3.timeFormat(\"%e %B %Y\")(d.key)}
    \n ${d.value.toLocaleString()} ${objectName}\n
    `\n\n circle.attr(\"transform\", `translate(${x(d.key)},${y(d.value)})`)\n tooltip.html(tooltipContent)\n .style(\"left\", `${coords.x + x(d.key)}px`)\n .style(\"top\", `${coords.y + y(d.value)}px`)\n })\n }\n\n if (showAxis) {\n let xAxis = d3.axisBottom(x)\n .ticks(d3.timeMonth)\n .tickFormat(d3.timeFormat(\"%b %y\"))\n .tickSize(-height)\n let yAxis = d3.axisLeft(y)\n .ticks(5)\n .tickSize(8)\n\n let _xAxis = (g) => {\n g.call(xAxis)\n g.select(\".domain\").remove()\n g.selectAll(\".tick line\").attr(\"class\", \"dashed\")\n g.selectAll(\".tick text\").attr(\"y\", 6)\n }\n let _yAxis = (g) => {\n g.call(yAxis)\n g.select(\".domain\").remove()\n g.select(\".tick:first-of-type\").remove()\n g.selectAll(\".tick text\").attr(\"text-anchor\", \"start\").attr(\"x\", 6)\n }\n\n // custom X-Axis\n svg.append(\"g\")\n .attr(\"transform\", `translate(0,${height})`)\n .call(_xAxis);\n\n // custom Y-Axis\n svg.append(\"g\")\n .call(_yAxis)\n\n // last circle (current value)\n let g = svg.append(\"g\")\n .data([data])\n .attr(\"transform\", (d) => `translate(${x(d[d.length - 1].key)},${y(d[d.length - 1].value)})`)\n\n g.append(\"circle\")\n .attr(\"class\", \"circle\")\n .attr(\"r\", 8)\n\n g.append(\"text\")\n .attr(\"class\", \"sum\")\n .attr(\"text-anchor\", \"end\")\n .attr(\"dx\", -8 * 2)\n .text((d) => d[d.length - 1].value.toLocaleString())\n\n } else {\n // add the title group\n let g = svg.append(\"g\")\n .attr(\"text-anchor\", \"start\")\n .attr(\"transform\", `translate(${titlePadding},${titlePadding})`)\n\n let titleLines = 0\n\n if (title.length) {\n g.append(\"text\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"class\", \"title\")\n .text(title)\n .call(function(fulltext, wrapwidth, start = 0) {\n fulltext.each(function() {\n let text = d3.select(this)\n let word = \"\"\n let words = text.text().split(/\\s+/).reverse()\n let line = []\n let lineNumber = 0\n let lineHeight = 1.1\n let _x = text.attr(\"x\")\n let _y = text.attr(\"y\")\n let dy = 0\n let tspan = text.text(null)\n .append(\"tspan\")\n .attr(\"x\", _x)\n .attr(\"y\", _y)\n .attr(\"dy\", `${dy}em`)\n\n /* eslint-disable no-cond-assign, no-plusplus */\n while (word = words.pop()) {\n line.push(word);\n tspan.text(line.join(\" \"));\n if (tspan.node().getComputedTextLength() > wrapwidth) {\n line.pop()\n tspan.text(line.join(\" \"))\n line = [word]\n tspan = text.append(\"tspan\")\n .attr(\"x\", _x)\n .attr(\"y\", _y)\n .attr(\"dy\", `${(++lineNumber * lineHeight) + dy}em`)\n .text(word);\n }\n }\n\n titleLines = lineNumber * lineHeight\n });\n }, width - (titlePadding * 2))\n }\n\n let fontSize = parseFloat(getComputedStyle(g.node()).fontSize);\n\n g.append(\"text\")\n .attr(\"x\", 0)\n .attr(\"dy\", title.length ? (titlePadding * 2) + (titleLines * fontSize) : (titlePadding * 1.25))\n .attr(\"class\", \"sum\")\n .text(data[data.length - 1].value.toLocaleString())\n }\n}\n","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 15596,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 15596,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;"],"names":["$","document","on","event","preventDefault","link","currentTarget","$modal","concat","dataset","open","html","ajax","type","url","openUrl","success","$html","foundation","error","request","status","_error","Configuration","_classCallCheck","this","config","key","value","arguments","length","undefined","_typeof","_objectSpread","TEMPLATE_HTML","ConfirmDialog","sourceElement","$source","$content","$buttonConfirm","$buttonCancel","titleId","Math","random","toString","substring","removeAttr","attr","append","message","_this","off","Promise","resolve","ev","focus","remove","handleConfirm","element","data","Rails","outerHTML","confirm","then","answer","completed","is","parents","submit","origEv","originalEvent","newEv","Event","constructor","target","dispatchEvent","allowAction","getMatchingEventTarget","selector","Element","parentNode","handleDocumentEvent","matchSelectors","some","currentSelector","addEventListener","DataPicker","pickers","modal","_createModalContainer","appendTo","current","each","_index","picker","activate","_this2","$picker","_setCurrentPicker","name","values","multiple","_index2","div","prepend","hasClass","isMultiPicker","_targetFromEvent","_openPicker","tagName","_removeValue","autosort","_sort","toggleClass","map","$link","val","text","get","savedData","_this3","_choose","interactive","modify","_load","$target","find","_this4","done","resp","modalContent","_handleLinks","_handleCheckboxes","content","_this5","click","chooseUrl","_this6","checkbox","$checkbox","checked","_targetFromValue","change","close","opts","options","Object","assign","dataText","_escape","choosenOption","input","$input","trigger","_removeErrors","_close","children","sort","item1","item2","detach","_this7","fadeoutTime","navigator","webdriver","fadeOut","parent","removeClass","str","replace","_char","charCodeAt","quillFormats","createQuillEditor","container","toolbar","disabled","quillToolbar","list","indent","addImage","addVideo","header","_toConsumableArray","modules","linebreak","handlers","lineBreakButtonHandler","siblings","innerHTML","token","push","imageResize","imageUpload","method","withCredentials","headers","callbackOK","serverResponse","next","last","callbackKO","serverError","console","log","checkBeforeSend","file","addClass","after","quill","Quill","formats","theme","root","disable","getText","CustomEvent","detail","getSelection","querySelectorAll","emptyParagraph","cleanHTML","RegExp","emitter","emit","formDatePicker","node","language","initialDate","pickTime","languageProps","fdatepicker","dates","format","disableDblClickSelection","leftArrow","rightArrow","delayed","context","func","wait","timeout","_len","args","Array","_key","clearTimeout","setTimeout","Reflect","apply","CheckBoxesTree","checkboxesTree","globalChecks","forEach","global","classList","add","checkGlobalCheck","checkTheCheckBoxes","checkTheCheckParent","checkboxes","index","includes","theForm","idx","elem","targetChecks","checkStatus","indeterminate","checksContext","totalInputs","checkedInputs","indeterminateInputs","from","filter","subfilters","nextElementSibling","contains","checkBoxContext","parentCheck","querySelector","totalCheckSiblings","checkedSiblings","indeterminateSiblings","sibling","FormFilterComponent","$form","id","_getUID","mounted","changeEvents","theCheckBoxesTree","theDataPicker","window","_updateInitialState","_onFormChange","bind","_onFormSubmit","_onPopState","Decidim","PopStateHandler","popStateSubmiter","unregisterCallback","queue","contentContainer","closest","currentFormRequest","e","abort","setContainerForm","registerCallback","currentState","_this$_currentStateAn2","_slicedToArray","_currentStateAndPath","initialPath","initialState","_path","replaceState","withHost","state","path","location","pathname","search","hash","origin","regexpResult","decodeURIComponent","_getLocation","match","reduce","acc","result","_result$match2","array","order","clear","_clearForm","filterParams","_parseLocationFilterValues","currentOrder","_parseLocationOrderValue","keys","fieldName","isArray","updateChecked","pickerState","load","fire","eventDetail","_this$_currentStateAn6","newPath","newState","pushState","_saveFilters","formAction","params","serialize","indexOf","save","Date","getUTCMilliseconds","floor","pathWithQueryStrings","sessionStorage","pathName","setItem","JSON","stringify","jQuery","fn","lb","days","daysShort","daysMin","months","monthsShort","today","$hashtagContainer","nodatafound","noMatchTemplate","cursor","__quill","tribute","Tribute","cb","post","query","response","hashtags","fail","always","$parent","remoteSearch","positionMenu","menuContainer","fillAttr","lookup","item","selectTemplate","range","isContentEditable","insertText","original","sources","API","position","getLength","setSelection","menuItemTemplate","$qlEditor","attach","isActive","$mentionContainer","callback","debounce","users","allowSpaces","menuItemLimit","selectClass","nickname","svg","__typename","iconsPath","membersCount","avatarUrl","setupEvents","$element","menu","body","getDocument","appendChild","tagsinput","tagClass","trimValue","sessionTimeOutEnabled","$timeoutModal","timeoutInSeconds","parseInt","secondsUntilTimeoutPath","heartbeatPath","interval","preventTimeOutSeconds","endsAt","moment","lastAction","$continueSessionButton","lastActivityCheck","preventTimeOutUntil","css","isNaN","setTimer","secondsUntilExpiration","heartbeat","contentType","exitInterval","setInterval","seconds","timeSinceLastActivityCheckInSeconds","round","secondsUntilSessionExpires","seconds_remaining","mousemove","scroll","keypress","ajaxComplete","_event","_xhr","settings","clearInterval","enableSessionTimeout","disableSessionTimeout","UTCDate","UTC","Datepicker","that","autoShow","closeButton","split","isRTL","rtl","DPGlobal","parseFormat","formatText","isInline","isInput","component","hasInput","onRender","linkField","linkFormat","minuteStep","pickerPosition","faCSSprefix","closeIcon","minView","convertViewMode","maxView","modes","startViewMode","startView","viewMode","forceParse","template","proxy","mousedown","show","hide","autoclose","keyboardNavigation","todayBtn","todayHighlight","calendarWeeks","i","weekStart","weekEnd","startDate","Infinity","endDate","daysOfWeekDisabled","datesDisabled","setStartDate","setEndDate","setDaysOfWeekDisabled","setDatesDisabled","date","viewDate","parseDate","setValue","fillDow","fillMonths","update","showMode","_attachEvents","prototype","_events","_detachEvents","keyup","keydown","dblclick","stopPropagation","blur","el","height","outerHeight","place","datepicker","getDate","d","getUTCDate","getTime","getTimezoneOffset","setDate","setUTCDate","formatted","getFormattedDate","formatDate","updateNavArrows","valueOf","zIndexes","zIndex","a","b","pop","textbox","offset","width","outerWidth","fullOffsetTop","top","offsetLeft","left","canShowTop","scrollTop","canShowBottom","fromArgs","currentVal","fill","dowCnt","cell","year","getUTCFullYear","month","getUTCMonth","dayMonth","hours","getUTCHours","minutes","getUTCMinutes","startYear","startMonth","endYear","endMonth","currentDate","titleFormat","en","toggle","prevMonth","day","getDaysInMonth","getUTCDay","nextMonth","clsName","getDay","getFullYear","calWeek","getMonth","inArray","empty","join","actual","currentYear","end","eq","slice","yearCont","hour","visibility","nodeName","toLowerCase","className","dir","navStep","moveHour","moveDate","moveMonth","moveYear","getHours","getMinutes","getSeconds","_setDate","getUTCSeconds","setUTCMonth","setUTCFullYear","substr","oldViewMode","which","new_date","setUTCHours","new_month","test","mag","abs","dateWithinRange","keyCode","newDate","newViewDate","dateChanged","ctrlKey","shiftKey","newViewMode","max","min","changeViewDate","reset","option","shift","_data","$this","extend","defaults","Constructor","navFnc","isLeapYear","validParts","nonpunctuation","separators","parts","Error","part_re","part","exec","Datetimepicker","call","filtered","parsed","setters_order","setters_map","hh","v","h","ii","setUTCMinutes","ss","setUTCSeconds","s","yyyy","yy","m","_d","M","MM","mm","dd","cnt","seps","headTemplate","contTemplate","footTemplate","metricsQuery","metrics","metricsData","metricsContainer","metricsParams","downloadMetricData","metricName","csvContent","metricData","createElement","setAttribute","encodeURI","removeChild","onclick","isEmptyObject","names","spaceType","spaceId","history","info","d3","Number","x","y","parseData","title","objectName","showAxis","axis","ratio","showTooltip","tip","agg","margin","getBoundingClientRect","titlePadding","area","y0","y1","valueline","domain","nice","circle","style","tooltip","x0","invert","d0","d1","coords","pageXOffset","pageYOffset","tooltipContent","toLocaleString","xAxis","ticks","tickFormat","tickSize","yAxis","g","select","selectAll","_g","titleLines","fulltext","wrapwidth","word","words","reverse","line","lineNumber","_x","_y","tspan","getComputedTextLength","fontSize","parseFloat","getComputedStyle","areachart","object","errors","err","statusText","webpackContext","req","webpackContextResolve","__webpack_require__","o","code","module","exports"],"sourceRoot":""}