{"version":3,"file":"js/2624-6b6a33bd338c561664a8.js","mappings":"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","sources":["webpack://app/../usr/local/bundle/bundler/gems/decidim-module-decidim_awesome-56e686f21756/app/packs/src/decidim/decidim_awesome/editors/editor.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-module-decidim_awesome-56e686f21756/app/packs/src/decidim/decidim_awesome/forms/rich_text_plugin.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-module-decidim_awesome-56e686f21756/app/packs/src/decidim/decidim_awesome/forms/custom_fields_renderer.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-module-decidim_awesome-56e686f21756/app/packs/src/decidim/decidim_awesome/proposals/custom_fields.js"],"sourcesContent":["/* eslint-disable require-jsdoc, func-style */\n\n/*\n* Since version 0.25 we follow a different strategy and opt to destroy and override completely the original editor\n* That's because editors are instantiated directly instead of creating a global function to instantiate them\n*/\n\nimport lineBreakButtonHandler from \"src/decidim/editor/linebreak_module\"\nimport InscrybMDE from \"inscrybmde\"\nimport Europa from \"europa\"\nimport \"inline-attachment/src/inline-attachment\";\nimport \"inline-attachment/src/codemirror-4.inline-attachment\";\nimport \"inline-attachment/src/jquery.inline-attachment\";\nimport hljs from \"highlight.js\";\nimport \"highlight.js/styles/github.css\";\nimport \"src/decidim/editor/clipboard_override\"\nimport \"src/decidim/vendor/image-resize.min\"\nimport \"src/decidim/vendor/image-upload.min\"\nimport { marked } from \"marked\";\n\nconst DecidimAwesome = window.DecidimAwesome || {};\nconst quillFormats = [\"bold\", \"italic\", \"link\", \"underline\", \"header\", \"list\", \"video\", \"image\", \"alt\", \"break\", \"width\", \"style\", \"code\", \"blockquote\", \"indent\"];\n\n// A tricky way to destroy the quill editor\nexport function destroyQuillEditor(container) {\n if (container) {\n const content = $(container).find(\".ql-editor\").html();\n $(container).html(content);\n $(container).siblings(\".ql-toolbar\").remove();\n $(container).find(\"*[class*='ql-']\").removeClass((index, className) => (className.match(/(^|\\s)ql-\\S+/g) || []).join(\" \"));\n $(container).removeClass((index, className) => (className.match(/(^|\\s)ql-\\S+/g) || []).join(\" \"));\n if ($(container).next().is(\"p.help-text\")) {\n $(container).next().remove();\n }\n }\n else {\n console.error(`editor [${container}] not exists`);\n }\n}\n\nexport function createQuillEditor(container) {\n const toolbar = $(container).data(\"toolbar\");\n const disabled = $(container).data(\"disabled\");\n const allowedEmptyContentSelector = \"iframe,img\";\n\n let quillToolbar = [\n [\"bold\", \"italic\", \"underline\", \"linebreak\"],\n [{ list: \"ordered\" }, { list: \"bullet\" }],\n [\"link\", \"clean\"],\n [\"code\", \"blockquote\"],\n [{ \"indent\": \"-1\"}, { \"indent\": \"+1\" }]\n ];\n\n let addImage = false;\n\n if (toolbar === \"full\") {\n quillToolbar = [\n [{ header: [2, 3, 4, 5, 6, false] }],\n ...quillToolbar\n ];\n if (DecidimAwesome.allow_images_in_full_editor) {\n quillToolbar.push([\"video\", \"image\"]);\n addImage = true;\n } else {\n quillToolbar.push([\"video\"]);\n }\n } else if (toolbar === \"basic\") {\n if (DecidimAwesome.allow_images_in_small_editor) {\n quillToolbar.push([\"video\", \"image\"]);\n addImage = true;\n } else {\n quillToolbar.push([\"video\"]);\n }\n } else if (DecidimAwesome.allow_images_in_small_editor) {\n quillToolbar.push([\"image\"]);\n addImage = true;\n }\n\n let modules = {\n linebreak: {},\n toolbar: {\n container: quillToolbar,\n handlers: {\n \"linebreak\": lineBreakButtonHandler\n }\n }\n };\n\n const $input = $(container).siblings('input[type=\"hidden\"]');\n container.innerHTML = $input.val() || \"\";\n const token = $('meta[name=\"csrf-token\"]').attr(\"content\");\n if (addImage) {\n modules.imageResize = {\n modules: [\"Resize\", \"DisplaySize\"]\n }\n modules.imageUpload = {\n url: DecidimAwesome.editor_uploader_path,\n method: \"POST\",\n name: \"image\",\n withCredentials: false,\n headers: { \"X-CSRF-Token\": token },\n callbackOK: (serverResponse, next) => {\n $(\"div.ql-toolbar\").last().removeClass(\"editor-loading\")\n next(serverResponse.url);\n },\n callbackKO: (serverError) => {\n $(\"div.ql-toolbar\").last().removeClass(\"editor-loading\")\n let msg = serverError && serverError.body;\n try {\n msg = JSON.parse(msg).message;\n } catch (evt) { console.error(\"Parsing error\", evt); }\n console.error(`Image upload error: ${msg}`);\n let $p = $(`<p class=\"text-alert help-text\">${msg}</p>`);\n $(container).after($p)\n setTimeout(() => {\n $p.fadeOut(1000, () => {\n $p.destroy();\n });\n }, 3000);\n },\n checkBeforeSend: (file, next) => {\n $(\"div.ql-toolbar\").last().addClass(\"editor-loading\")\n next(file);\n }\n }\n }\n const quill = new Quill(container, {\n modules: modules,\n formats: quillFormats,\n theme: \"snow\"\n });\n\n if (disabled) {\n quill.disable();\n }\n\n quill.on(\"text-change\", () => {\n const text = quill.getText();\n\n // Triggers CustomEvent with the cursor position\n // It is required in input_mentions.js\n let event = new CustomEvent(\"quill-position\", {\n detail: quill.getSelection()\n });\n container.dispatchEvent(event);\n\n if ((text === \"\\n\" || text === \"\\n\\n\") && quill.root.querySelectorAll(allowedEmptyContentSelector).length === 0) {\n $input.val(\"\");\n } else {\n const emptyParagraph = \"<p><br></p>\";\n const cleanHTML = quill.root.innerHTML.replace(\n new RegExp(`^${emptyParagraph}|${emptyParagraph}$`, \"g\"),\n \"\"\n );\n $input.val(cleanHTML);\n }\n });\n // After editor is ready, linebreak_module deletes two extraneous new lines\n quill.emitter.emit(\"editor-ready\");\n\n if (addImage) {\n const text = $(container).data(\"dragAndDropHelpText\") || DecidimAwesome.texts.drag_and_drop_image;\n $(container).after(`<p class=\"help-text\" style=\"margin-top:-1.5rem;\">${text}</p>`);\n }\n\n // After editor is ready, linebreak_module deletes two extraneous new lines\n quill.emitter.emit(\"editor-ready\");\n\n return quill;\n}\n\nexport function createMarkdownEditor(container) {\n const text = DecidimAwesome.texts.drag_and_drop_image;\n const token = $('meta[name=\"csrf-token\"]').attr(\"content\");\n const $input = $(container).siblings('input[type=\"hidden\"]');\n const $faker = $('<textarea name=\"faker-inscrybmde\"/>');\n const $form = $(container).closest(\"form\");\n const europa = new Europa();\n $faker.val(europa.convert($input.val()));\n $faker.insertBefore($(container));\n $(container).hide();\n const inscrybmde = new InscrybMDE({\n element: $faker[0],\n spellChecker: false,\n renderingConfig: {\n codeSyntaxHighlighting: true,\n hljs: hljs\n }\n });\n $faker[0].InscrybMDE = inscrybmde;\n\n // Allow image upload\n if (DecidimAwesome.allow_images_in_markdown_editor) {\n $(inscrybmde.gui.statusbar).prepend(`<span class=\"help-text\" style=\"float:left;margin:0;text-align:left;\">${text}</span>`);\n window.inlineAttachment.editors.codemirror4.attach(inscrybmde.codemirror, {\n uploadUrl: DecidimAwesome.editor_uploader_path,\n uploadFieldName: \"image\",\n jsonFieldName: \"url\",\n extraHeaders: { \"X-CSRF-Token\": token }\n });\n }\n\n // Allow linebreaks\n marked.setOptions({\n breaks: true\n });\n\n // convert to html on submit\n $form.on(\"submit\", () => {\n // e.preventDefault();\n $input.val(marked(inscrybmde.value()));\n });\n}\n","/**\n * Decidim rich text editor control plugin\n * Renders standard Decidim WYSIWYG editor\n *\n * Registers Decidim Richtext as a subtype for the textarea control\n */\nimport {createQuillEditor} from \"src/decidim/decidim_awesome/editors/editor\"\n\n// configure the class for runtime loading\nif (!window.fbControls) {\n window.fbControls = []\n}\nwindow.fbControls.push(function(controlClass, allControlClasses) {\n const controlTextarea = allControlClasses.textarea\n\n /**\n * DecidimRichtext control class\n *\n * NOTE: I haven't found a way to set the userData value using this plugin\n * For this reason the value of the field must be collected manually\n * from the hidden input name same as the field with the suffix '-input'\n */\n class controlRichtext extends controlTextarea {\n\n /**\n * Class configuration - return the icons & label related to this control\n * @return {JSON} definition object\n */\n static get definition() {\n return {\n icon: \"ðŸ“\",\n i18n: {\n default: \"Rich Text Editor\"\n }\n }\n }\n\n /**\n * configure the richtext editor requirements\n * @return {void}\n */\n configure() {\n window.fbEditors.richtext = {};\n }\n\n /**\n * build a div DOM element & convert to a richtext editor\n * @return {DOMElement} DOM Element to be injected into the form.\n */\n build() {\n const { value, userData, ...attrs } = this.config;\n\n // hidden input for storing the current HTML value of the div\n this.inputId = `${this.id}-input`;\n // console.log(\"build plugin: this\",this)\n this.input = this.markup(\"input\", null, {\n name: name,\n id: this.inputId,\n type: \"hidden\",\n value: (userData && userData[0]) || value || \"\"\n });\n\n const css = this.markup(\n \"style\",\n `\n #${attrs.id} { height: auto; min-height: 6rem; padding-left: 0; padding-right: 0; }\n #${attrs.id} div.ql-container { height: ${attrs.rows || 1}rem; }\n #${attrs.id} p.help-text { margin-top: .5rem; }\n `,\n { type: \"text/css\" }\n );\n const wrapperAttrs = {...attrs, \"data-toolbar\": \"full\" };\n // console.log(\"build value\", value, \"userData\", userData, \"attrs\", attrs, attrs.id, \"wrapperAttrs\", wrapperAttrs);\n this.wrapper = this.markup(\"div\", null, wrapperAttrs);\n return this.markup(\"div\", [css, this.input, this.wrapper], attrs);\n }\n\n /**\n * When the element is rendered into the DOM, execute the following code to initialise it\n * @param {Object} evt - event\n * @return {Object} evt - event\n */\n onRender(evt) {\n // const value = this.config.value || '';\n if (window.fbEditors.richtext[this.id]) {\n // console.log(\"todo destroy\", window.fbEditors.richtext[this.id]);\n // window.fbEditors.richtext[this.id].richtext('destroy')\n }\n\n window.fbEditors.quill[this.id] = {};\n const editor = window.fbEditors.quill[this.id];\n // createQuillEditor does all the job to update the hidden input wrapper\n editor.instance = createQuillEditor(this.wrapper);\n // editor.data = new Delta();\n // if (value) {\n // editor.instance.setContents(window.JSON.parse(this.parsedHtml(value)));\n // }\n // editor.instance.on('text-change', function(delta) {\n // console.log(\"text-change\", \"delta\", delta, \"editor\", editor);\n // // // editor.data = editor.data.compose(delta);\n // });\n\n // console.log(\"render! editor\", editor, \"this\", this, \"value\", value);\n return evt;\n }\n }\n\n // register Decidim richtext as a richtext control\n controlTextarea.register(\"richtext\", controlRichtext, \"textarea\");\n})\n","import \"formBuilder/dist/form-render.min.js\";\nimport \"src/decidim/decidim_awesome/forms/rich_text_plugin\"\n\nexport default class CustomFieldsRenderer { // eslint-disable-line no-unused-vars\n constructor(containerSelector) {\n this.containerSelector = containerSelector || \".proposal_custom_field:last\";\n this.lang = this.getLang(window.DecidimAwesome.currentLocale);\n }\n\n getLang(lang) {\n const langs = {\n // ar: 'ar-SA', // Not in decidim yet\n \"ar\": \"ar-TN\",\n \"ca\": \"ca-ES\",\n \"cs\": \"cs-CZ\",\n \"da\": \"da-DK\",\n \"de\": \"de-DE\",\n \"el\": \"el-GR\",\n \"en\": \"en-US\",\n \"es\": \"es-ES\",\n \"fa\": \"fa-IR\",\n \"fi\": \"fi-FI\",\n \"fr\": \"fr-FR\",\n \"he\": \"he-IL\",\n \"hu\": \"hu-HU\",\n \"it\": \"it-IT\",\n \"ja\": \"ja-JP\",\n \"my\": \"my-MM\",\n \"nb\": \"nb-NO\",\n \"nl\": \"nl-NL\",\n \"pl\": \"pl-PL\",\n \"pt\": \"pt-BR\",\n \"qz\": \"qz-MM\",\n \"ro\": \"ro-RO\",\n \"ru\": \"ru-RU\",\n \"sl\": \"sl-SI\",\n \"th\": \"th-TH\",\n \"tr\": \"tr-TR\",\n \"uk\": \"uk-UA\",\n \"vi\": \"vi-VN\",\n \"zh-TW\": \"zh-TW\",\n \"zh\": \"zh-CN\"\n };\n if (langs[lang]) {\n return langs[lang];\n }\n if (langs[lang.substr(0, 2)]) {\n return langs[lang.substr(0, 2)];\n }\n return \"en-US\";\n }\n\n /*\n * Creates an XML document with a subset of html-compatible dl/dd/dt elements\n * to store the custom fields answers\n */\n dataToXML(data) {\n const $dl = $(\"<dl/>\");\n let $dd = null,\n $div = null,\n $dt = null,\n datum = null,\n key = null,\n label = null,\n text = null,\n val = null;\n $dl.attr(\"class\", \"decidim_awesome-custom_fields\");\n $dl.attr(\"data-generator\", \"decidim_awesome\");\n $dl.attr(\"data-version\", window.DecidimAwesome.version);\n for (key in data) { // eslint-disable-line guard-for-in\n // console.log(\"get the data!\", key, data[key]);\n // Richtext plugin does not saves userdata, so we get it from the hidden input\n if (data[key].type === \"textarea\" && data[key].subtype === \"richtext\") {\n data[key].userData = [$(`#${data[key].name}-input`).val()];\n }\n if (data[key].userData && data[key].userData.length) {\n $dt = $(\"<dt/>\");\n $dt.text(data[key].label);\n $dt.attr(\"name\", data[key].name);\n $dd = $(\"<dd/>\");\n // console.log(\"data for\", key, data[key].name, data[key])\n for (val in data[key].userData) { // eslint-disable-line guard-for-in\n $div = $(\"<div/>\");\n label = data[key].userData[val];\n text = null;\n if (data[key].values) {\n datum = data[key].values.find((obj) => obj.value === label); // eslint-disable-line no-loop-func\n if (datum) { // eslint-disable-line max-depth\n text = label;\n label = datum.label;\n }\n } else if (data[key].type === \"date\" && label) {\n datum = new Date(label).toLocaleDateString();\n if (datum) { // eslint-disable-line max-depth\n text = label;\n label = datum;\n }\n }\n // console.log(\"userData\", text, \"label\", label, 'key', key, 'data', data)\n if (data[key].type === \"textarea\" && data[key].subtype === \"richtext\") {\n $div.html(label);\n } else {\n $div.text(label);\n }\n if (text) {\n $div.attr(\"alt\", text);\n }\n $dd.append($div);\n }\n $dd.attr(\"id\", data[key].name);\n $dd.attr(\"name\", data[key].type);\n $dl.append($dt);\n $dl.append($dd);\n }\n }\n return `<xml>${$dl[0].outerHTML}</xml>`;\n }\n\n fixBuggyFields() {\n if (!this.$element) {\n return false;\n }\n\n /**\n * Hack to fix required checkboxes being reset\n * Issue: https://github.com/decidim-ice/decidim-module-decidim_awesome/issues/82\n */\n this.$element.find(\".formbuilder-checkbox-group\").each((_key, group) => {\n const inputs = $(\".formbuilder-checkbox input\", group);\n const $label = $(group).find(\"label\");\n const data = this.spec.find((obj) => obj.type === \"checkbox-group\" && obj.name === $label.attr(\"for\"));\n let values = data.userData;\n if (!inputs.length || !data || !values) {\n return;\n }\n\n inputs.each((_idx, input) => {\n let index = values.indexOf(input.value);\n if (index >= 0) {\n values.splice(index, 1)\n // setting checked=true do not makes the browser aware that the form is valid if the field is required\n if (!input.checked)\n {$(input).click();}\n } else if (input.checked)\n {$(input).click();}\n });\n\n // Fill \"other\" option\n const otherOption = $(\".other-option\", inputs.parent())[0];\n const otherVal = $(\".other-val\", inputs.parent())[0];\n const otherText = values.join(\" \");\n\n if (otherOption) {\n if (otherText) {\n otherOption.checked = true;\n otherOption.value = otherText;\n otherVal.value = otherText;\n } else {\n otherOption.checked = false;\n otherOption.value = \"\";\n otherVal.value = \"\";\n }\n }\n });\n\n /**\n * Hack to fix required radio buttons \"other\" value\n * Issue: https://github.com/decidim-ice/decidim-module-decidim_awesome/issues/133\n */\n this.$element.find(\".formbuilder-radio input.other-val\").on(\"input\", (input) => {\n const $input = $(input.currentTarget);\n const $group = $input.closest(\".formbuilder-radio-group\");\n $group.find(\"input\").each((_key, radio) => {\n const name = $(radio).attr(\"name\");\n if (name && name.endsWith(\"[]\")) {\n $(radio).attr(\"name\", name.slice(0, -2));\n }\n });\n });\n return this;\n }\n\n // Saves xml to the hidden input\n storeData() {\n if (!this.$element) {\n return false;\n }\n const $form = this.$element.closest(\"form\");\n const $body = $form.find(`input[name=\"${this.$element.data(\"name\")}\"]`);\n if ($body.length && this.instance) {\n this.spec = this.instance.userData;\n console.log(\"Spec data:\", this.spec);\n $body.val(this.dataToXML(this.spec));\n this.$element.data(\"spec\", this.spec);\n }\n // console.log(\"storeData spec\", this.spec, \"$body\", $body,\"$form\",$form,\"this\",this);\n return this;\n }\n\n init($element) {\n console.log(\"CustomFieldsRenderer init\");\n this.$element = $element;\n console.log(\"Element for rendering:\", $element);\n\n this.spec = $element.data(\"spec\");\n console.log(\"Spec data:\", this.spec);\n // console.log(\"init\", $element, \"this\", this)\n // in case of multilang tabs we only render one form due a limitation in the library for handling several instances\n this.instance = $element.formRender({\n i18n: {\n locale: this.lang,\n location: \"https://cdn.jsdelivr.net/npm/formbuilder-languages@1.1.0/\"\n },\n formData: this.spec,\n render: true,\n disableInjectedStyle: true,\n controlConfig: {\n \"textarea.richtext\": {\n editorOptions: $element.data(\"editorOptions\")\n }\n }\n });\n this.fixBuggyFields();\n }\n}\n","import CustomFieldsRenderer from \"src/decidim/decidim_awesome/forms/custom_fields_renderer\"\n\n$(() => {\n window.DecidimAwesome.CustomFieldsRenderer = window.DecidimAwesome.CustomFieldsRenderer || new CustomFieldsRenderer();\n window.DecidimAwesome.PrivateCustomFieldsRenderer = window.DecidimAwesome.PrivateCustomFieldsRenderer || new CustomFieldsRenderer();\n\n // use admin multilang specs if exists\n const $public = $(\".proposal_custom_field:first\");\n const $private = $(\".proposal_custom_field.proposal_custom_field--private_body:first\");\n let $form = null;\n if ($public.length) {\n window.DecidimAwesome.CustomFieldsRenderer.init($public);\n $form = window.DecidimAwesome.CustomFieldsRenderer.$element.closest(\"form\");\n }\n if ($private.length) {\n window.DecidimAwesome.PrivateCustomFieldsRenderer.init($private);\n if (!$form) {\n $form = window.DecidimAwesome.PrivateCustomFieldsRenderer.$element.closest(\"form\");\n }\n }\n\n if ($form) {\n $form.on(\"submit\", (evt) => {\n if (evt.target.checkValidity()) {\n // save current editors\n if ($public.length) {\n window.DecidimAwesome.CustomFieldsRenderer.storeData();\n }\n if ($private.length) {\n window.DecidimAwesome.PrivateCustomFieldsRenderer.storeData();\n }\n } else {\n evt.preventDefault();\n evt.target.reportValidity();\n }\n });\n }\n});\n"],"names":["DecidimAwesome","window","quillFormats","fbControls","push","controlClass","allControlClasses","controlTextarea","textarea","controlRichtext","_controlTextarea","_classCallCheck","_callSuper","arguments","_inherits","key","get","icon","i18n","default","value","fbEditors","richtext","_this$config","this","config","userData","attrs","_objectWithoutProperties","_excluded","inputId","concat","id","input","markup","name","type","css","rows","wrapperAttrs","_objectSpread","wrapper","evt","quill","instance","container","toolbar","$","data","disabled","quillToolbar","list","addImage","header","_toConsumableArray","allow_images_in_full_editor","allow_images_in_small_editor","modules","linebreak","handlers","lineBreakButtonHandler","$input","siblings","innerHTML","val","token","attr","imageResize","imageUpload","url","editor_uploader_path","method","withCredentials","headers","callbackOK","serverResponse","next","last","removeClass","callbackKO","serverError","msg","body","JSON","parse","message","console","error","$p","after","setTimeout","fadeOut","destroy","checkBeforeSend","file","addClass","Quill","formats","theme","disable","on","text","getText","event","CustomEvent","detail","getSelection","dispatchEvent","root","querySelectorAll","length","emptyParagraph","cleanHTML","replace","RegExp","emitter","emit","texts","drag_and_drop_image","createQuillEditor","register","CustomFieldsRenderer","containerSelector","lang","getLang","currentLocale","langs","substr","$dl","$dd","$div","$dt","datum","label","version","subtype","values","find","obj","Date","toLocaleDateString","html","append","outerHTML","_this","$element","each","_key","group","inputs","$label","spec","_idx","index","indexOf","splice","checked","click","otherOption","parent","otherVal","otherText","join","currentTarget","closest","radio","endsWith","slice","$body","log","dataToXML","formRender","locale","location","formData","render","disableInjectedStyle","controlConfig","editorOptions","fixBuggyFields","PrivateCustomFieldsRenderer","$public","$private","$form","init","target","checkValidity","storeData","preventDefault","reportValidity"],"sourceRoot":""}