{"version":3,"file":"js/3072-689840673ddd5b559883.js","mappings":"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","sources":["webpack://decidim-app/./app/packs/src/decidim/configuration.js","webpack://decidim-app/./app/packs/src/decidim/confirm.js","webpack://decidim-app/./app/packs/src/decidim/direct_uploads/uploader.js","webpack://decidim-app/./app/packs/src/decidim/direct_uploads/upload_utility.js","webpack://decidim-app/./app/packs/src/decidim/direct_uploads/upload_modal.js","webpack://decidim-app/./app/packs/src/decidim/direct_uploads/upload_field.js","webpack://decidim-app/./app/packs/src/decidim/editor.js","webpack://decidim-app/./app/packs/src/decidim/input_tags.js"],"sourcesContent":["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","import { DirectUpload } from \"@rails/activestorage\";\n\nexport class Uploader {\n constructor(modal, uploadItem, options) {\n this.modal = modal;\n this.uploadItem = uploadItem;\n this.progressBar = uploadItem.querySelector(\".progress-bar\");\n this.validationSent = false;\n this.fileTooBig = false;\n if (modal.options.maxFileSize && options.file.size > modal.options.maxFileSize) {\n this.fileTooBig = true;\n this.showError([modal.locales.file_size_too_large]);\n } else {\n this.upload = new DirectUpload(options.file, options.url, this);\n }\n }\n\n showError(errors) {\n this.progressBar.classList.add(\"filled\");\n this.progressBar.innerHTML = this.modal.locales.validation_error;\n this.uploadItem.dataset.state = \"error\";\n const errorList = this.uploadItem.querySelector(\".upload-errors\");\n errors.forEach((error) => {\n const errorItem = document.createElement(\"li\");\n errorItem.classList.add(\"form-error\", \"is-visible\");\n errorItem.innerHTML = error;\n errorList.appendChild(errorItem);\n })\n }\n\n validate(blobId) {\n const callback = (data) => {\n let errors = []\n for (const [, value] of Object.entries(data)) {\n errors = errors.concat(value);\n }\n\n this.progressBar.style.justifyContent = \"center\";\n if (errors.length === 0) {\n this.progressBar.innerHTML = this.modal.locales.uploaded;\n this.uploadItem.dataset.state = \"validated\";\n } else {\n this.showError(errors);\n }\n this.progressBar.classList.add(\"filled\");\n }\n\n if (!this.validationSent) {\n let property = this.modal.options.addAttribute;\n if (this.modal.options.titled) {\n property = \"file\"\n }\n const params = new URLSearchParams({\n resourceClass: this.modal.options.resourceClass,\n property: property,\n blob: blobId,\n formClass: this.modal.options.formObjectClass\n });\n\n fetch(`/upload_validations?${params.toString()}`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-CSRF-Token\": $(\"meta[name=csrf-token]\").attr(\"content\")\n }\n }).then((response) => response.json()).then((data) => {\n callback(data);\n });\n this.validationSent = true;\n }\n }\n\n directUploadWillStoreFileWithXHR(request) {\n request.upload.addEventListener(\"progress\", (event) => {\n const progress = Math.floor(event.loaded / event.total * 100);\n let width = \"15%\";\n if (progress > 15) {\n width = `${progress}%`;\n }\n this.progressBar.style.width = width;\n\n if (progress === 100) {\n this.progressBar.innerHTML = this.modal.locales.validating;\n return;\n }\n this.progressBar.innerHTML = `${progress}%`;\n });\n }\n}\n","export const checkTitles = (parentElement, saveButton) => {\n let everyItemHasTitle = true;\n\n Array.from(parentElement.children).forEach((item) => {\n const title = item.querySelector(\"input[type='text']\").value;\n const noTitleErrorSpan = item.querySelector(\".no-title-error\");\n if (!title || title.length === 0) {\n everyItemHasTitle = false;\n saveButton.disabled = true;\n noTitleErrorSpan.classList.add(\"is-visible\");\n item.appendChild(noTitleErrorSpan);\n } else {\n noTitleErrorSpan.classList.remove(\"is-visible\");\n }\n });\n\n if (everyItemHasTitle) {\n saveButton.disabled = false;\n }\n}\n\nexport const truncateFilename = (filename, maxLength = 31) => {\n if (filename.length <= maxLength) {\n return filename;\n }\n\n const charactersFromBegin = Math.floor(maxLength / 2) - 3;\n const charactersFromEnd = maxLength - charactersFromBegin - 3;\n return `${filename.slice(0, charactersFromBegin)}...${filename.slice(-charactersFromEnd)}`;\n}\n\nexport const createHiddenInput = (elClasses, elName, elValue) => {\n const el = document.createElement(\"input\");\n el.type = \"hidden\";\n if (elClasses) {\n if (typeof (elClasses) === \"string\") {\n el.className = elClasses;\n } else {\n el.className = elClasses.join(\" \")\n }\n }\n if (elName) {\n el.name = elName;\n }\n if (elValue) {\n el.value = elValue;\n }\n return el;\n}\n","import { Uploader } from \"src/decidim/direct_uploads/uploader\";\nimport { truncateFilename, checkTitles, createHiddenInput } from \"src/decidim/direct_uploads/upload_utility\";\n\n// This class handles logic inside upload modal, but since modal is not inside the form\n// logic here moves \"upload items\" / hidden inputs to form.\nexport default class UploadModal {\n constructor(button, options = {}) {\n // Button that opens the modal.\n this.button = button;\n\n // The provided options contains the options passed from the view in the\n // `data-upload` attribute as a JSON.\n let providedOptions = {};\n try {\n // The providedOptions can contain the following keys:\n // - addAttribute - Field name / attribute of resource (e.g. avatar)\n // - resourceName - The resource to which the attribute belongs (e.g. user)\n // - resourceClass - Ruby class of the resource (e.g. Decidim::User)\n // - optional - Defines if file is optional\n // - multiple - Defines if multiple files can be uploaded\n // - titled - Defines if file(s) can have titles\n // - maxFileSize - Defines maximum file size in bytes\n // - formObjectClass - Class of the current form object (e.g. Decidim::AccountForm)\n providedOptions = JSON.parse(button.dataset.upload);\n } catch (_e) {\n // Don't care about the parse errors, just skip the provided options.\n }\n\n this.options = Object.assign(providedOptions, options)\n\n this.name = this.button.name;\n this.modal = document.querySelector(`#${button.dataset.open}`);\n this.saveButton = this.modal.querySelector(`button.add-file-${this.name}`);\n this.attachmentCounter = 0;\n this.dropZoneEnabled = true;\n this.modalTitle = this.modal.querySelector(\".reveal__title\");\n this.uploadItems = this.modal.querySelector(\".upload-items\");\n this.locales = JSON.parse(this.uploadItems.dataset.locales);\n this.dropZone = this.modal.querySelector(\".dropzone\");\n this.input = this.dropZone.querySelector(\"input\");\n this.uploadContainer = document.querySelector(`.upload-container-for-${this.name}`);\n this.activeAttachments = this.uploadContainer.querySelector(\".active-uploads\");\n this.trashCan = this.createTrashCan();\n }\n\n uploadFile(file) {\n if (!this.dropZoneEnabled) {\n return;\n }\n\n const title = file.name.split(\".\")[0].slice(0, 31);\n const uploadItem = this.createUploadItem(file.name, title, \"init\");\n const uploader = new Uploader(this, uploadItem, {\n file: file,\n url: this.input.dataset.directUploadUrl,\n attachmentName: file.name\n });\n if (uploader.fileTooBig) {\n return;\n }\n\n uploader.upload.create((error, blob) => {\n if (error) {\n uploadItem.dataset.state = \"error\";\n const progressBar = uploadItem.querySelector(\".progress-bar\");\n progressBar.classList.add(\"filled\");\n progressBar.innerHTML = this.locales.error;\n console.error(error);\n } else {\n const ordinalNumber = this.getOrdinalNumber();\n\n const attachmentDetails = document.createElement(\"div\");\n attachmentDetails.classList.add(\"attachment-details\");\n attachmentDetails.dataset.filename = file.name;\n const titleAndFileNameSpan = document.createElement(\"span\");\n titleAndFileNameSpan.style.display = \"none\";\n attachmentDetails.appendChild(titleAndFileNameSpan);\n\n const hiddenBlobField = createHiddenInput(null, null, blob.signed_id);\n if (this.options.titled) {\n hiddenBlobField.name = `${this.options.resourceName}[${this.options.addAttribute}][${ordinalNumber}][file]`;\n } else {\n hiddenBlobField.name = `${this.options.resourceName}[${this.options.addAttribute}]`;\n }\n\n if (this.options.titled) {\n const hiddenTitleField = createHiddenInput(\"hidden-title\", `${this.options.resourceName}[${this.options.addAttribute}][${ordinalNumber}][title]`, title);\n titleAndFileNameSpan.innerHTML = `${title} (${file.name})`;\n attachmentDetails.appendChild(hiddenTitleField);\n } else {\n titleAndFileNameSpan.innerHTML = file.name;\n }\n\n if (!this.options.multiple) {\n this.cleanTrashCan();\n }\n\n attachmentDetails.appendChild(hiddenBlobField);\n uploadItem.appendChild(attachmentDetails);\n uploader.validate(blob.signed_id);\n }\n });\n this.updateDropZone();\n }\n\n getOrdinalNumber() {\n const nextOrdinalNumber = this.attachmentCounter;\n this.attachmentCounter += 1;\n return nextOrdinalNumber;\n }\n\n updateDropZone() {\n if (this.options.multiple) {\n return;\n }\n\n if (this.uploadItems.children.length > 0) {\n this.dropZone.classList.add(\"disabled\");\n this.dropZoneEnabled = false;\n this.input.disabled = true;\n } else {\n this.dropZone.classList.remove(\"disabled\");\n this.dropZoneEnabled = true;\n this.input.disabled = false;\n }\n }\n\n createUploadItem(fileName, title, state) {\n const wrapper = document.createElement(\"div\");\n wrapper.classList.add(\"upload-item\");\n wrapper.setAttribute(\"data-filename\", fileName);\n\n const firstRow = document.createElement(\"div\");\n const secondRow = document.createElement(\"div\");\n const thirdRow = document.createElement(\"div\");\n firstRow.classList.add(\"row\", \"upload-item-first-row\");\n secondRow.classList.add(\"row\", \"upload-item-second-row\");\n thirdRow.classList.add(\"row\", \"upload-item-third-row\");\n\n const fileNameSpan = document.createElement(\"span\");\n let fileNameSpanClasses = [\"columns\", \"file-name-span\"];\n if (this.options.titled) {\n fileNameSpanClasses.push(\"small-4\", \"medium-5\");\n } else {\n fileNameSpanClasses.push(\"small-12\");\n }\n fileNameSpan.classList.add(...fileNameSpanClasses);\n fileNameSpan.innerHTML = truncateFilename(fileName);\n\n const progressBar = document.createElement(\"div\");\n progressBar.classList.add(\"progress-bar\");\n if (state) {\n if (state === \"validated\") {\n progressBar.innerHTML = this.locales.uploaded;\n } else {\n progressBar.innerHTML = \"0%\";\n progressBar.style.width = \"15%\";\n }\n wrapper.dataset.state = state;\n }\n\n const progressBarBorder = document.createElement(\"div\");\n progressBarBorder.classList.add(\"progress-bar-border\");\n progressBarBorder.appendChild(progressBar);\n\n const progressBarWrapper = document.createElement(\"div\");\n progressBarWrapper.classList.add(\"columns\", \"progress-bar-wrapper\");\n progressBarWrapper.appendChild(progressBarBorder);\n if (this.options.titled) {\n progressBarWrapper.classList.add(\"small-4\", \"medium-5\");\n } else {\n progressBarWrapper.classList.add(\"small-10\");\n }\n\n const errorList = document.createElement(\"ul\");\n errorList.classList.add(\"upload-errors\");\n\n const removeButton = document.createElement(\"button\");\n removeButton.classList.add(\"columns\", \"small-3\", \"medium-2\", \"remove-upload-item\");\n removeButton.innerHTML = `× ${this.locales.remove}`;\n removeButton.addEventListener((\"click\"), (event) => {\n event.preventDefault();\n const item = this.uploadItems.querySelector(`[data-filename='${fileName}']`);\n this.trashCan.append(item);\n this.updateDropZone();\n })\n\n const titleAndFileNameSpan = document.createElement(\"span\");\n titleAndFileNameSpan.classList.add(\"columns\", \"small-5\", \"title-and-filename-span\");\n titleAndFileNameSpan.innerHTML = `${title} (${truncateFilename(fileName)})`;\n\n firstRow.appendChild(fileNameSpan);\n secondRow.appendChild(progressBarWrapper);\n thirdRow.appendChild(errorList);\n\n let titleInputContainer = null;\n if (this.options.titled) {\n const titleInput = document.createElement(\"input\");\n titleInput.classList.add(\"attachment-title\");\n titleInput.type = \"text\";\n titleInput.value = title;\n titleInput.addEventListener(\"input\", (event) => {\n event.preventDefault();\n checkTitles(this.uploadItems, this.saveButton);\n })\n titleInputContainer = document.createElement(\"div\");\n titleInputContainer.classList.add(\"columns\", \"small-5\", \"title-input-container\");\n titleInputContainer.appendChild(titleInput);\n\n const noTitleErrorSpan = document.createElement(\"span\");\n noTitleErrorSpan.classList.add(\"form-error\", \"no-title-error\");\n noTitleErrorSpan.role = \"alert\";\n noTitleErrorSpan.innerHTML = this.locales.title_required;\n titleInputContainer.appendChild(noTitleErrorSpan);\n\n const titleLabelSpan = document.createElement(\"span\");\n titleLabelSpan.classList.add(\"title-label-span\");\n titleLabelSpan.innerHTML = this.locales.title;\n\n const titleContainer = document.createElement(\"div\");\n titleContainer.classList.add(\"columns\", \"small-8\", \"medium-7\", \"title-container\");\n titleContainer.appendChild(titleLabelSpan);\n firstRow.appendChild(titleContainer);\n secondRow.appendChild(titleInputContainer);\n }\n\n secondRow.appendChild(removeButton);\n\n wrapper.appendChild(firstRow);\n wrapper.appendChild(secondRow);\n wrapper.appendChild(thirdRow);\n\n this.uploadItems.appendChild(wrapper);\n\n return wrapper;\n }\n\n updateAddAttachmentsButton() {\n if (this.activeAttachments.children.length === 0) {\n this.button.innerHTML = this.modalTitle.dataset.addlabel;\n } else {\n this.button.innerHTML = this.modalTitle.dataset.editlabel;\n }\n }\n\n createTrashCan() {\n const trashCan = document.createElement(\"div\");\n trashCan.classList.add(\"trash-can\");\n trashCan.style.display = \"none\";\n this.uploadItems.parentElement.appendChild(trashCan);\n return trashCan;\n }\n\n cleanTrashCan() {\n Array.from(this.trashCan.children).forEach((item) => {\n const fileName = item.dataset.filename;\n const activeAttachment = this.activeAttachments.querySelector(`div[data-filename='${fileName}']`);\n if (activeAttachment) {\n activeAttachment.remove();\n }\n item.remove();\n })\n }\n}\n","import UploadModal from \"src/decidim/direct_uploads/upload_modal\";\nimport { truncateFilename, createHiddenInput } from \"src/decidim/direct_uploads/upload_utility\";\n\nconst loadAttachments = (modal) => {\n Array.from(modal.activeAttachments.children).forEach((child) => {\n modal.createUploadItem(child.dataset.filename, child.dataset.title, \"validated\");\n })\n}\n\nconst addInputEventListener = (modal) => {\n modal.input.addEventListener(\"change\", (event) => {\n event.preventDefault();\n const files = event.target.files;\n Array.from(files).forEach((file) => modal.uploadFile(file));\n })\n}\n\nconst addButtonEventListener = (modal) => {\n modal.button.addEventListener(\"click\", (event) => {\n event.preventDefault();\n Array.from(modal.trashCan.children).forEach((item) => {\n modal.uploadItems.append(item);\n })\n if (modal.uploadItems.children.length === 0) {\n modal.modalTitle.innerHTML = modal.modalTitle.dataset.addlabel;\n } else {\n modal.modalTitle.innerHTML = modal.modalTitle.dataset.editlabel;\n }\n modal.updateDropZone();\n })\n}\n\nconst addDropZoneEventListeners = (modal) => {\n modal.dropZone.addEventListener(\"dragenter\", (event) => {\n event.preventDefault();\n })\n\n modal.dropZone.addEventListener(\"dragover\", (event) => {\n event.preventDefault();\n modal.dropZone.classList.add(\"is-dragover\");\n })\n\n modal.dropZone.addEventListener(\"dragleave\", () => {\n modal.dropZone.classList.remove(\"is-dragover\");\n })\n\n modal.dropZone.addEventListener(\"drop\", (event) => {\n event.preventDefault();\n const files = event.dataTransfer.files;\n Array.from(files).forEach((file) => modal.uploadFile(file));\n })\n}\n\nconst addSaveButtonEventListener = (modal) => {\n modal.saveButton.addEventListener(\"click\", (event) => {\n event.preventDefault();\n const validatedItems = modal.uploadItems.querySelectorAll(\".upload-item[data-state='validated']\")\n const validatedItemsCount = validatedItems.length;\n validatedItems.forEach((item) => {\n let details = item.querySelector(\".attachment-details\");\n if (details) {\n modal.activeAttachments.appendChild(details);\n } else {\n details = modal.activeAttachments.querySelector(`.attachment-details[data-filename='${item.dataset.filename}'`);\n }\n const span = details.querySelector(\"span\");\n span.classList.add(\"filename\");\n if (modal.options.titled) {\n const title = item.querySelector(\"input[type='text']\").value;\n details.dataset.title = title;\n let hiddenTitle = details.querySelector(\".hidden-title\")\n if (hiddenTitle) {\n hiddenTitle.value = title;\n } else {\n const attachmentId = details.querySelector(`[name='${modal.options.resourceName}[${modal.name}][]'`).value\n const ordinalNumber = modal.getOrdinalNumber()\n const hiddenTitleField = createHiddenInput(\"hidden-title\", `${modal.options.resourceName}[${modal.options.addAttribute}][${ordinalNumber}][title]`, title)\n const hiddenIdField = createHiddenInput(\"hidden-id\", `${modal.options.resourceName}[${modal.options.addAttribute}][${ordinalNumber}][id]`, attachmentId)\n details.appendChild(hiddenTitleField);\n details.appendChild(hiddenIdField);\n }\n span.innerHTML = `${title} (${truncateFilename(item.dataset.filename)})`;\n } else {\n span.innerHTML = truncateFilename(item.dataset.filename, 19);\n }\n span.style.display = \"block\";\n });\n\n if (!modal.options.titled && modal.trashCan.children.length > 0) {\n modal.activeAttachments.innerHTML = ``;\n }\n\n if (validatedItemsCount > 0) {\n // Foundation helper does some magic with error fields, so these must be triggered using jQuery.\n const $el = $(modal.uploadContainer.querySelector(\"input[type='checkbox']\"));\n if ($el) {\n $el.prop(\"checked\", true);\n $el.trigger(\"change\");\n }\n }\n modal.cleanTrashCan();\n modal.updateAddAttachmentsButton();\n });\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const attachmentButtons = document.querySelectorAll(\"button.add-file\");\n\n attachmentButtons.forEach((attachmentButton) => {\n const modal = new UploadModal(attachmentButton);\n loadAttachments(modal);\n addInputEventListener(modal);\n addButtonEventListener(modal);\n addDropZoneEventListeners(modal);\n addSaveButtonEventListener(modal);\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 = [\"bold\", \"italic\", \"link\", \"underline\", \"header\", \"list\", \"video\", \"image\", \"alt\", \"break\", \"width\", \"style\", \"code\", \"blockquote\", \"indent\"];\n\nexport default function createQuillEditor(container) {\n const toolbar = $(container).data(\"toolbar\");\n const disabled = $(container).data(\"disabled\");\n\n 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 [{ 'savedDataset': \"openModal\" }]\n ]\n\n let addImage = $(container).data(\"editorImages\");\n\n if (toolbar === \"full\") {\n quillToolbar = [\n [{ header: [2, 3, 4, 5, 6, false] }],\n ...quillToolbar,\n [\"video\"]\n ];\n } else if (toolbar === \"basic\") {\n quillToolbar = [\n ...quillToolbar,\n [\"video\"]\n ];\n }\n\n\n let modalData = [];\n let hasFetched = false; // Add this flag\n\n // Function to fetch data\n function fetchData() {\n if (!hasFetched) { // Check if fetch hasn't been performed yet\n fetch('/idra_update', {\n method: 'GET'\n })\n .then(response => {\n if (response.ok) {\n return response.text(); // Assuming the response is HTML\n } else {\n throw new Error('Failed to fetch the updated content');\n }\n })\n .then(data => {\n const parser = new DOMParser();\n const doc = parser.parseFromString(data, 'text/html');\n const datasetElements = doc.querySelectorAll('#datasets-list a');\n const urlElements = doc.querySelectorAll('#datasets-list #url');\n \n datasetElements.forEach((dataset, index) => {\n const title = dataset.textContent;\n const url = urlElements[index].textContent;\n modalData.push({ title, url });\n });\n })\n .catch(error => {\n console.error('Error updating partial view:', error);\n });\n \n hasFetched = true; // Set the flag to indicate that fetch has been performed\n }\n }\n\n // Call the fetchData function\n fetchData();\n\n\n // Function to create and display the modal\n function openModal() {\n // Create a modal container\n var modalContainer = document.createElement('div');\n modalContainer.classList.add('modal-container');\n\n // Create a modal element\n var modal = document.createElement('div');\n modal.classList.add('modal');\n\n // Modal content\n var modalContent = document.createElement('div');\n modalContent.classList.add('modal-content');\n modalContent.id = 'modalContent';\n\n // Create an unordered list to display the elements as a list\n // Create a div for the links\n var linksDiv = document.createElement('div');\n linksDiv.classList.add('links-column');\n\n var titleElement = document.createElement('h1');\n titleElement.textContent = \"Saved Dataset\";\n linksDiv.appendChild(titleElement);\n titleElement.className = \"text-center\"\n\n var descriptionElement = document.createElement(\"h5\")\n descriptionElement.textContent = \"Select a dataset to insert in text editor:\"\n descriptionElement.style.color = \"gray\"\n linksDiv.appendChild(descriptionElement)\n\n // Loop through modalData array and create links with click event listeners\n modalData.forEach(function (element) {\n var link = document.createElement('a');\n link.href = element.url; // URL as the href attribute of the link\n link.textContent = element.title; // Title as the visible text of the link\n linksDiv.appendChild(link);\n \n link.addEventListener('click', function (event) {\n event.preventDefault(); // Prevent default navigation behavior\n \n copyAndPasteText(element.title, element.url);\n modalContainer.style.display = 'none'; // Close the modal\n });\n \n if (element !== modalData[modalData.length - 1]) {\n linksDiv.appendChild(document.createElement('br'));\n }\n });\n\n\n // Function to copy and paste the text into the Quill editor\n function copyAndPasteText(title, url) {\n const range = quill.getSelection();\n\n const linkFormat = {\n link: url,\n target: '_blank',\n };\n\n quill.insertText(range.index, title, linkFormat);\n quill.setSelection(range.index, title.length, 'user');\n }\n modalContent.appendChild(linksDiv);\n modal.appendChild(modalContent);\n modalContainer.appendChild(modal);\n document.body.appendChild(modalContainer);\n\n // Open the modal\n modalContainer.style.display = 'block';\n\n // Close modal when clicking outside the modal\n window.addEventListener('click', function (event) {\n if (event.target == modalContainer) {\n modalContainer.style.display = 'none';\n }\n });\n }\n\n\n let modules = {\n linebreak: {},\n toolbar: {\n container: quillToolbar,\n handlers: {\n \"linebreak\": lineBreakButtonHandler,\n \"savedDataset\": openModal,\n }\n }\n };\n\n \n\n\n const $input = $(container).siblings('input[type=\"hidden\"]');\n container.innerHTML = $input.val() || \"\";\n const token = $('meta[name=\"csrf-token\"]').attr(\"content\");\n if (addImage) {\n modules.imageResize = {\n modules: [\"Resize\", \"DisplaySize\"]\n }\n modules.imageUpload = {\n url: $(container).data(\"uploadImagesPath\"),\n method: \"POST\",\n name: \"image\",\n withCredentials: false,\n headers: { \"X-CSRF-Token\": token },\n callbackOK: (serverResponse, next) => {\n $(\"div.ql-toolbar\").last().removeClass(\"editor-loading\")\n next(serverResponse.url);\n },\n callbackKO: (serverError) => {\n $(\"div.ql-toolbar\").last().removeClass(\"editor-loading\")\n console.log(`Image upload error: ${serverError.message}`);\n },\n checkBeforeSend: (file, next) => {\n $(\"div.ql-toolbar\").last().addClass(\"editor-loading\")\n next(file);\n }\n }\n }\n const quill = new Quill(container, {\n modules: modules,\n formats: quillFormats,\n theme: \"snow\"\n });\n\n\n\n if (disabled) {\n quill.disable();\n }\n\n quill.on(\"text-change\", () => {\n const text = quill.getText();\n\n // Triggers CustomEvent with the cursor position\n // It is required in input_mentions.js\n let event = new CustomEvent(\"quill-position\", {\n detail: quill.getSelection()\n });\n container.dispatchEvent(event);\n\n if ((text === \"\\n\" || text === \"\\n\\n\") && quill.root.querySelectorAll(allowedEmptyContentSelector).length === 0) {\n $input.val(\"\");\n } else {\n const emptyParagraph = \"


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

${text}

`);\n }\n\n // After editor is ready, linebreak_module deletes two extraneous new lines\n quill.emitter.emit(\"editor-ready\");\n\n return quill;\n}","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"],"names":["Configuration","_classCallCheck","this","config","key","value","arguments","length","undefined","_typeof","_objectSpread","TEMPLATE_HTML","ConfirmDialog","sourceElement","$modal","$","$source","$content","$buttonConfirm","$buttonCancel","titleId","concat","Math","random","toString","substring","removeAttr","attr","append","foundation","message","_this","html","off","Promise","resolve","on","ev","preventDefault","focus","remove","handleConfirm","element","data","Rails","outerHTML","confirm","then","answer","completed","type","is","parents","submit","origEv","originalEvent","newEv","Event","constructor","target","dispatchEvent","allowAction","getMatchingEventTarget","selector","Element","parentNode","handleDocumentEvent","matchSelectors","some","currentSelector","document","addEventListener","Uploader","modal","uploadItem","options","progressBar","querySelector","validationSent","fileTooBig","maxFileSize","file","size","showError","locales","file_size_too_large","upload","DirectUpload","url","errors","classList","add","innerHTML","validation_error","dataset","state","errorList","forEach","error","errorItem","createElement","appendChild","blobId","property","addAttribute","titled","params","URLSearchParams","resourceClass","blob","formClass","formObjectClass","fetch","method","headers","response","json","_i","_Object$entries","Object","entries","_slicedToArray","style","justifyContent","uploaded","callback","request","_this2","event","progress","floor","loaded","total","width","validating","truncateFilename","filename","maxLength","charactersFromBegin","charactersFromEnd","slice","createHiddenInput","elClasses","elName","elValue","el","className","join","name","UploadModal","button","providedOptions","JSON","parse","_e","assign","open","saveButton","attachmentCounter","dropZoneEnabled","modalTitle","uploadItems","dropZone","input","uploadContainer","activeAttachments","trashCan","createTrashCan","title","split","createUploadItem","uploader","directUploadUrl","attachmentName","create","console","ordinalNumber","getOrdinalNumber","attachmentDetails","titleAndFileNameSpan","display","hiddenBlobField","signed_id","resourceName","hiddenTitleField","multiple","cleanTrashCan","validate","updateDropZone","nextOrdinalNumber","children","disabled","fileName","_fileNameSpan$classLi","wrapper","setAttribute","firstRow","secondRow","thirdRow","fileNameSpan","fileNameSpanClasses","push","apply","progressBarBorder","progressBarWrapper","removeButton","item","titleInputContainer","titleInput","parentElement","everyItemHasTitle","Array","from","noTitleErrorSpan","role","title_required","titleLabelSpan","titleContainer","addlabel","editlabel","_this3","activeAttachment","querySelectorAll","attachmentButton","child","loadAttachments","files","uploadFile","addInputEventListener","addButtonEventListener","dataTransfer","addDropZoneEventListeners","validatedItems","validatedItemsCount","details","span","hiddenTitle","attachmentId","hiddenIdField","$el","prop","trigger","updateAddAttachmentsButton","addSaveButtonEventListener","quillFormats","createQuillEditor","container","toolbar","quillToolbar","list","addImage","header","_toConsumableArray","modalData","hasFetched","ok","text","Error","doc","DOMParser","parseFromString","datasetElements","urlElements","index","textContent","modules","linebreak","handlers","lineBreakButtonHandler","modalContainer","modalContent","id","linksDiv","titleElement","descriptionElement","color","link","href","range","linkFormat","quill","getSelection","insertText","setSelection","body","window","$input","siblings","val","token","imageResize","imageUpload","withCredentials","callbackOK","serverResponse","next","last","removeClass","callbackKO","serverError","log","checkBeforeSend","addClass","Quill","formats","theme","disable","getText","CustomEvent","detail","root","emptyParagraph","cleanHTML","replace","RegExp","emitter","emit","after","tagsinput","tagClass","trimValue"],"sourceRoot":""}