{"version":3,"file":"js/decidim_comments-e2c8685fbe72db906c3e.js","mappings":"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","sources":["webpack://metadecidim/./vendor/bundle/ruby/3.2.0/gems/decidim-core-0.29.2/app/packs/src/decidim/change_report_form_behavior.js","webpack://metadecidim/./vendor/bundle/ruby/3.2.0/gems/decidim-comments-0.29.2/app/packs/src/decidim/comments/comments.component.js","webpack://metadecidim/./vendor/bundle/ruby/3.2.0/gems/decidim-comments-0.29.2/app/packs/src/decidim/comments/comments.js"],"sourcesContent":["/**\n * These set of functions aims to change the behavior of the report modal forms\n * so that when checking various checkboxes, to change the label of the button\n * to either report or hide.\n * Given the behavior is similar for report content and report user, we have the\n * functionality grouped in one single function.\n * It is important to note that the report user modal has a checkbox that allows\n * the admin to block the user in the report user modal.\n */\n\n/**\n * @param {DomElement} input The checkbox that is being checked\n * @return {Void} Nothing\n */\nconst changeLabel = function (input) {\n let submit = input.closest(\"form\").querySelector(\"button[type=submit]\");\n\n if (submit.querySelector(\"span\") !== null) {\n submit = submit.querySelector(\"span\");\n }\n if (input.checked === true) {\n submit.innerHTML = input.dataset.labelAction;\n } else {\n submit.innerHTML = input.dataset.labelReport;\n }\n}\n\n/**\n * @param {Object} container The form handling the report.\n * @return {Void} Nothing\n */\nexport default function changeReportFormBehavior(container) {\n container.querySelectorAll(\"[data-hide=true]\").forEach((checkbox) => {\n checkbox.addEventListener(\"change\", (event) => {\n changeLabel(event.target);\n });\n });\n container.querySelectorAll(\"[data-block=true]\").forEach((checkbox) => {\n checkbox.addEventListener(\"change\", (event) => {\n changeLabel(event.target);\n let blockAndHide = event.target.closest(\"form\").querySelector(\"#block_and_hide\");\n blockAndHide.classList.toggle(\"invisible\");\n });\n });\n}\n","/* eslint id-length: [\"error\", { \"exceptions\": [\"$\"] }] */\n/* eslint max-lines: [\"error\", {\"max\": 350, \"skipBlankLines\": true}] */\n\n/**\n * A plain JavaScript component that handles the comments.\n *\n * @class\n * @augments Component\n */\n\n// This is necessary for testing purposes\nconst $ = window.$;\n\nimport changeReportFormBehavior from \"src/decidim/change_report_form_behavior\"\n\nexport default class CommentsComponent {\n constructor($element, config) {\n this.$element = $element;\n this.commentableGid = config.commentableGid;\n this.commentsUrl = config.commentsUrl;\n this.rootDepth = config.rootDepth;\n this.order = config.order;\n this.lastCommentId = config.lastCommentId;\n this.pollingInterval = config.pollingInterval || 15000;\n this.singleComment = config.singleComment;\n this.toggleTranslations = config.toggleTranslations;\n this.id = this.$element.attr(\"id\") || this._getUID();\n this.mounted = false;\n }\n\n /**\n * Handles the logic for mounting the component\n * @public\n * @returns {Void} - Returns nothing\n */\n mountComponent() {\n if (this.$element.length > 0 && !this.mounted) {\n this.mounted = true;\n this._initializeComments(this.$element);\n if (!this.singleComment) {\n $(\".add-comment textarea\", this.$element).prop(\"disabled\", true);\n this._fetchComments(() => {\n $(\".add-comment textarea\", this.$element).prop(\"disabled\", false);\n });\n }\n }\n }\n\n /**\n * Handles the logic for unmounting the component\n * @public\n * @returns {Void} - Returns nothing\n */\n unmountComponent() {\n if (this.mounted) {\n this.mounted = false;\n this._stopPolling();\n\n $(\".add-comment [data-opinion-toggle] button\", this.$element).off(\"click.decidim-comments\");\n $(\".add-comment textarea\", this.$element).off(\"input.decidim-comments\");\n $(\".add-comment form\", this.$element).off(\"submit.decidim-comments\");\n $(\".add-comment textarea\", this.$element).each((_i, el) => el.removeEventListener(\"emoji.added\", this._onTextInput));\n }\n }\n\n /**\n * Adds a new thread to the comments section.\n * @public\n * @param {String} threadHtml - The HTML content for the thread.\n * @param {Boolean} fromCurrentUser - A boolean indicating whether the user\n * herself was the author of the new thread. Defaults to false.\n * @returns {Void} - Returns nothing\n */\n addThread(threadHtml, fromCurrentUser = false) {\n const $parent = $(\".comments:first\", this.$element);\n const $comment = $(threadHtml);\n const $threads = $(\".comment-threads\", this.$element);\n this._addComment($threads, $comment);\n this._finalizeCommentCreation($parent, fromCurrentUser);\n }\n\n /**\n * Adds a new reply to an existing comment.\n * @public\n * @param {Number} commentId - The ID of the comment for which to add the\n * reply to.\n * @param {String} replyHtml - The HTML content for the reply.\n * @param {Boolean} fromCurrentUser - A boolean indicating whether the user\n * herself was the author of the new reply. Defaults to false.\n * @returns {Void} - Returns nothing\n */\n addReply(commentId, replyHtml, fromCurrentUser = false) {\n const $parent = $(`#comment_${commentId}`);\n const $comment = $(replyHtml);\n const $replies = $(`#comment-${commentId}-replies`);\n this._addComment($replies, $comment);\n $replies.addClass(\"comment-reply\");\n this._finalizeCommentCreation($parent, fromCurrentUser);\n }\n\n /**\n * Generates a unique identifier for the form.\n * @private\n * @returns {String} - Returns a unique identifier\n */\n _getUID() {\n return `comments-${new Date().setUTCMilliseconds()}-${Math.floor(Math.random() * 10000000)}`;\n }\n\n /**\n * Initializes the comments for the given parent element.\n * @private\n * @param {jQuery} $parent The parent element to initialize.\n * @returns {Void} - Returns nothing\n */\n _initializeComments($parent) {\n $(\".add-comment\", $parent).each((_i, el) => {\n const $add = $(el);\n const $form = $(\"form\", $add);\n const $opinionButtons = $(\"[data-opinion-toggle] button\", $add);\n const $text = $(\"textarea\", $form);\n\n $opinionButtons.on(\"click.decidim-comments\", this._onToggleOpinion);\n $text.on(\"input.decidim-comments\", this._onTextInput);\n\n $(document).trigger(\"attach-mentions-element\", [$text.get(0)]);\n\n $form.on(\"submit.decidim-comments\", () => {\n const $submit = $(\"button[type='submit']\", $form);\n\n $submit.attr(\"disabled\", \"disabled\");\n this._stopPolling();\n });\n\n document.querySelectorAll(\".new_report\").forEach((container) => changeReportFormBehavior(container))\n\n if ($text.length && $text.get(0) !== null) {\n // Attach event to the DOM node, instead of the jQuery object\n $text.get(0).addEventListener(\"emoji.added\", this._onTextInput);\n }\n });\n }\n\n /**\n * Adds the given comment element to the given target element and\n * initializes it.\n * @private\n * @param {jQuery} $target - The target element to add the comment to.\n * @param {jQuery} $container - The comment container element to add.\n * @returns {Void} - Returns nothing\n */\n _addComment($target, $container) {\n let $comment = $(\".comment\", $container);\n if ($comment.length < 1) {\n // In case of a reply\n $comment = $container;\n }\n this.lastCommentId = parseInt($comment.data(\"comment-id\"), 10);\n\n $target.append($container);\n\n this._initializeComments($container);\n document.dispatchEvent(new CustomEvent(\"comments:loaded\", { detail: {commentsIds: [this.lastCommentId] }}));\n }\n\n /**\n * Finalizes the new comment creation after the comment adding finishes\n * successfully.\n * @private\n * @param {jQuery} $parent - The parent comment element to finalize.\n * @param {Boolean} fromCurrentUser - A boolean indicating whether the user\n * herself was the author of the new comment.\n * @returns {Void} - Returns nothing\n */\n _finalizeCommentCreation($parent, fromCurrentUser) {\n if (fromCurrentUser) {\n const $add = $(\".add-comment\", $parent);\n $(\"textarea\", $add).each((_i, text) => {\n const $text = $(text);\n // Reset textarea content\n $text.val(\"\")\n // Update characterCounter component\n const characterCounter = $text.data(\"remaining-characters-counter\");\n if (characterCounter) {\n characterCounter.handleInput();\n characterCounter.updateStatus();\n }\n })\n }\n\n // Restart the polling\n this._pollComments();\n }\n\n /**\n * Sets a timeout to poll new comments.\n * @private\n * @returns {Void} - Returns nothing\n */\n _pollComments() {\n this._stopPolling();\n\n this.pollTimeout = setTimeout(() => {\n this._fetchComments();\n }, this.pollingInterval);\n }\n\n /**\n * Sends an ajax request based on current\n * params to get comments for the component\n * @private\n * @param {Function} successCallback A callback that is called after a\n * successful fetch\n * @returns {Void} - Returns nothing\n */\n _fetchComments(successCallback = null) {\n Rails.ajax({\n url: this.commentsUrl,\n type: \"GET\",\n data: new URLSearchParams({\n \"commentable_gid\": this.commentableGid,\n \"root_depth\": this.rootDepth,\n \"order\": this.order,\n // From here, the rest of properties are optional\n ...(this.toggleTranslations && { \"toggle_translations\": this.toggleTranslations }),\n ...(this.lastCommentId && { \"after\": this.lastCommentId })\n }),\n success: () => {\n if (successCallback) {\n successCallback();\n }\n this._pollComments();\n }\n });\n }\n\n /**\n * Stops polling for new comments.\n * @private\n * @returns {Void} - Returns nothing\n */\n _stopPolling() {\n if (this.pollTimeout) {\n clearTimeout(this.pollTimeout);\n }\n }\n\n /**\n * Sets the loading comments element visible in the view.\n * @private\n * @returns {Void} - Returns nothing\n */\n _setLoading() {\n const $container = $(\"> #comments\", this.$element);\n $(\"> .comments\", $container).addClass(\"hidden\");\n $(\"> .loading-comments\", $container).removeClass(\"hidden\");\n }\n\n /**\n * Event listener for the ordering links.\n * @private\n * @returns {Void} - Returns nothing\n */\n _onInitOrder() {\n this._stopPolling();\n this._setLoading();\n }\n\n /**\n * Event listener for the opinion toggle buttons.\n * @private\n * @param {Event} ev - The event object.\n * @returns {Void} - Returns nothing\n */\n _onToggleOpinion(ev) {\n let $btn = $(ev.target);\n if (!$btn.is(\"button\")) {\n $btn = $btn.parents(\"button\");\n }\n\n const $add = $btn.closest(\".add-comment\");\n const $form = $(\"form\", $add);\n const $opinionButtons = $(\"[data-opinion-toggle] button\", $add);\n const $selectedState = $(\"[data-opinion-toggle] .selected-state\", $add);\n const $alignment = $(\".alignment-input\", $form);\n\n $opinionButtons.removeClass(\"is-active\").attr(\"aria-pressed\", \"false\");\n $btn.addClass(\"is-active\").attr(\"aria-pressed\", \"true\");\n\n if ($btn.data(\"toggleOk\")) {\n $alignment.val(1);\n } else if ($btn.data(\"toggleMeh\")) {\n $alignment.val(0);\n } else if ($btn.data(\"toggleKo\")) {\n $alignment.val(-1);\n }\n\n // Announce the selected state for the screen reader\n $selectedState.text($btn.data(\"selected-label\"));\n }\n\n /**\n * Event listener for the comment field text input.\n * @private\n * @param {Event} ev - The event object.\n * @returns {Void} - Returns nothing\n */\n _onTextInput(ev) {\n const $text = $(ev.target);\n const $add = $text.closest(\".add-comment\");\n const $form = $(\"form\", $add);\n const $submit = $(\"button[type='submit']\", $form);\n\n if ($text.val().length > 0) {\n $submit.removeAttr(\"disabled\");\n } else {\n $submit.attr(\"disabled\", \"disabled\");\n }\n }\n}\n","import CommentsComponent from \"src/decidim/comments/comments.component\"\n\nwindow.Decidim.CommentsComponent = CommentsComponent;\n\nconst commentsInitializer = () => {\n // Mount comments component\n $(\"[data-decidim-comments]\").each((_i, el) => {\n const $el = $(el);\n let comments = $(el).data(\"comments\");\n if (!comments) {\n comments = new CommentsComponent($el, $el.data(\"decidim-comments\"));\n }\n comments.mountComponent();\n $(el).data(\"comments\", comments);\n });\n}\n\n// If no jQuery is used the Tribute feature used in comments to autocomplete\n// mentions stops working\n$(() => commentsInitializer());\n"],"names":["changeLabel","input","submit","closest","querySelector","checked","innerHTML","dataset","labelAction","labelReport","changeReportFormBehavior","container","querySelectorAll","forEach","checkbox","addEventListener","event","target","classList","toggle","$","window","CommentsComponent","constructor","$element","config","commentableGid","commentsUrl","rootDepth","order","lastCommentId","pollingInterval","singleComment","toggleTranslations","id","attr","_getUID","mounted","mountComponent","length","_initializeComments","prop","_fetchComments","unmountComponent","_stopPolling","off","each","_i","el","removeEventListener","_onTextInput","addThread","threadHtml","fromCurrentUser","$parent","$comment","$threads","_addComment","_finalizeCommentCreation","addReply","commentId","replyHtml","$replies","addClass","Date","setUTCMilliseconds","Math","floor","random","$add","$form","$opinionButtons","$text","on","_onToggleOpinion","document","trigger","get","$target","$container","parseInt","data","append","dispatchEvent","CustomEvent","detail","commentsIds","text","val","characterCounter","handleInput","updateStatus","_pollComments","pollTimeout","setTimeout","successCallback","Rails","ajax","url","type","URLSearchParams","__spreadValues","success","clearTimeout","_setLoading","removeClass","_onInitOrder","ev","$btn","is","parents","$selectedState","$alignment","$submit","removeAttr","Decidim","commentsInitializer","$el","comments"],"sourceRoot":""}