{"version":3,"sources":["@novablocks/block-library/src/blocks/post-comments/lib/js/comment-reply.js"],"names":["window","addComment","document","config","commentReplyClass","commentReplyTitleId","cancelReplyId","commentFormId","temporaryFormId","parentIdFieldId","postIdFieldId","commentsWrapperId","openFormButtonClass","commentFormSubmitId","replyingFlagClass","focusOnFieldId","Object","assign","MutationObserver","WebKitMutationObserver","MozMutationObserver","cutsTheMustard","supportsDataset","documentElement","dataset","commentsWrapperElement","cancelElement","commentFormElement","respondElement","observer","readyState","ready","addEventListener","init","observeChanges","context","getElementById","childNodes","cancelEvent","submitFormHandler","e","metaKey","ctrlKey","keyCode","removeEventListener","preventDefault","submit","click","links","concat","Array","from","replyLinks","openFormButtons","element","i","l","length","clickEvent","observerOptions","childList","subtree","handleChanges","observe","body","mutationRecords","addedNodes","getElementsByClass","selectorClass","allElements","getElementsByClassName","querySelectorAll","event","replyNode","defaultReplyHeading","firstChild","textContent","replyLink","commId","getDataAttribute","parentId","respondId","postId","replyTo","follow","moveForm","cancelLink","temporaryElement","value","headingText","parentNode","replaceChild","style","display","classList","remove","replyHeadingElement","replyHeadingTextNode","replyLinkToParent","nextSibling","nodeType","Node","TEXT_NODE","nodeName","id","submitButton","attribute","getAttribute","elementId","addBelowId","commentId","addBelowElement","parentIdField","postIdField","replyHeading","addPlaceHolder","insertBefore","add","onclick","focusElement","focus","elements","type","disabled","isCssHidden","cssHidden","getComputedStyle","currentStyle","offsetWidth","offsetHeight","visibility","replyElement","initialHeadingText","createElement"],"mappings":"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","sourcesContent":["/**\n * Handles the moving of the comment form for reply and other needs.\n *\n * This is a modified version of the core wp-includes/js/comment-reply.js\n *\n * @namespace addComment\n *\n * @type {Object}\n */\nwindow.addComment = (function (window) {\n // Avoid scope lookups on commonly used variables.\n let document = window.document;\n\n // Settings.\n let config = {\n commentReplyClass: 'comment-reply-link',\n commentReplyTitleId: 'reply-title',\n cancelReplyId: 'cancel-comment-reply-link',\n commentFormId: 'commentform',\n temporaryFormId: 'wp-temp-form-div',\n parentIdFieldId: 'comment_parent',\n postIdFieldId: 'comment_post_ID',\n\n // Our additional config settings\n commentsWrapperId: 'comments',\n openFormButtonClass: 'js-open-comment-form',\n commentFormSubmitId: 'comment-form-submit',\n replyingFlagClass: 'user-is-replying',\n focusOnFieldId: 'commentTrixEditor',\n };\n\n // If we have global settings, merge them with the defaults.\n if (typeof window.addComment !== 'undefined' && typeof window.addComment.config !== 'undefined') {\n Object.assign(config, window.addComment.config);\n }\n\n // Cross browser MutationObserver.\n let MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;\n\n // Check browser cuts the mustard.\n let cutsTheMustard = 'querySelector' in document && 'addEventListener' in window;\n\n /*\n * Check browser supports dataset.\n * !! sets the variable to true if the property exists.\n */\n let supportsDataset = !!document.documentElement.dataset;\n\n // For holding the comments wrapper element.\n let commentsWrapperElement;\n\n // For holding the cancel element.\n let cancelElement;\n\n // For holding the comment form element.\n let commentFormElement;\n\n // The respond element.\n let respondElement;\n\n // The mutation observer.\n let observer;\n\n if (cutsTheMustard && document.readyState !== 'loading') {\n ready()\n } else if (cutsTheMustard) {\n window.addEventListener('DOMContentLoaded', ready, false)\n }\n\n /**\n * Sets up object variables after the DOM is ready.\n *\n * @since 5.1.1\n */\n function ready () {\n // Initialise the events.\n init();\n\n // Set up a MutationObserver to check for comments loaded late.\n observeChanges()\n }\n\n /**\n * Add events to links classed .comment-reply-link.\n *\n * Searches the context for reply links and adds the JavaScript events\n * required to move the comment form. To allow for lazy loading of\n * comments this method is exposed as window.commentReply.init().\n *\n * @since 5.1.0\n *\n * @memberOf addComment\n *\n * @param {HTMLElement} context The parent DOM element to search for links.\n */\n function init (context) {\n if (!cutsTheMustard) {\n return\n }\n\n // Get required elements.\n commentsWrapperElement = getElementById(config.commentsWrapperId);\n cancelElement = getElementById(config.cancelReplyId);\n commentFormElement = getElementById(config.commentFormId);\n\n // No cancel element, no replies.\n if (!cancelElement) {\n return\n }\n\n // childNodes is a handy check to ensure the context is a HTMLElement.\n if (!context || !context.childNodes) {\n context = commentsWrapperElement\n }\n\n cancelElement.addEventListener('touchstart', cancelEvent);\n cancelElement.addEventListener('click', cancelEvent);\n\n // Submit the comment form when the user types [Ctrl] or [Cmd] + [Enter].\n let submitFormHandler = function (e) {\n if ((e.metaKey || e.ctrlKey) && e.keyCode === 13) {\n commentFormElement.removeEventListener('keydown', submitFormHandler);\n e.preventDefault();\n // The submit button ID is 'submit' so we can't call commentFormElement.submit(). Click it instead.\n commentFormElement.submit.click();\n return false\n }\n };\n\n if (commentFormElement) {\n commentFormElement.addEventListener('keydown', submitFormHandler)\n }\n\n let links = [];\n links = links.concat(Array.from(replyLinks(context)));\n links = links.concat(Array.from(openFormButtons(context)));\n\n let element;\n for (let i = 0, l = links.length; i < l; i++) {\n element = links[i];\n\n element.addEventListener('touchstart', clickEvent);\n element.addEventListener('click', clickEvent)\n }\n }\n\n /**\n * Creates a mutation observer to check for newly inserted comments.\n *\n * @since 5.1.0\n */\n function observeChanges () {\n if (!MutationObserver) {\n return\n }\n\n let observerOptions = {\n childList: true,\n subtree: true\n };\n\n observer = new MutationObserver(handleChanges);\n observer.observe(document.body, observerOptions)\n }\n\n /**\n * Handles DOM changes, calling init() if any new nodes are added.\n *\n * @since 5.1.0\n *\n * @param {Array} mutationRecords Array of MutationRecord objects.\n */\n function handleChanges (mutationRecords) {\n let i = mutationRecords.length;\n\n while (i--) {\n // Call init() once if any record in this set adds nodes.\n if (mutationRecords[i].addedNodes.length) {\n init();\n return\n }\n }\n }\n\n /**\n * Return all links classed .comment-reply-link.\n *\n * @since 5.1.0\n *\n * @param {HTMLElement} context The parent DOM element to search for links.\n *\n * @return {HTMLCollection|NodeList|Array}\n */\n function replyLinks (context) {\n return getElementsByClass(config.commentReplyClass, context)\n }\n\n /**\n * Return all buttons classed .js-open-comment-form.\n *\n * Custom method of ours.\n *\n * @param {HTMLElement} context The parent DOM element to search for links.\n *\n * @return {HTMLCollection|NodeList|Array}\n */\n function openFormButtons (context) {\n return getElementsByClass(config.openFormButtonClass, context)\n }\n\n /**\n * Return all elements with the provided class.\n *\n * Custom method of ours.\n *\n * @param {string} selectorClass\n * @param {HTMLElement} context The parent DOM element to search for links.\n *\n * @return {HTMLCollection|NodeList|Array}\n */\n function getElementsByClass (selectorClass, context) {\n let allElements;\n\n // childNodes is a handy check to ensure the context is a HTMLElement.\n if (!context || !context.childNodes) {\n context = document\n }\n\n if (document.getElementsByClassName) {\n // Fastest.\n allElements = context.getElementsByClassName(selectorClass)\n } else {\n // Fast.\n allElements = context.querySelectorAll('.' + selectorClass)\n }\n\n return allElements\n }\n\n /**\n * Click event handler.\n *\n * @since 5.1.0\n *\n * @param {Event} event The calling event.\n */\n function clickEvent (event) {\n let replyNode = getElementById(config.commentReplyTitleId);\n let defaultReplyHeading = replyNode && replyNode.firstChild.textContent;\n let replyLink = this,\n commId = getDataAttribute(replyLink, 'belowelement'),\n parentId = getDataAttribute(replyLink, 'commentid'),\n respondId = getDataAttribute(replyLink, 'respondelement'),\n postId = getDataAttribute(replyLink, 'postid'),\n replyTo = getDataAttribute(replyLink, 'replyto') || defaultReplyHeading,\n follow;\n\n if (!commId || !respondId || !postId) {\n /*\n * Theme or plugin defines own link via custom `wp_list_comments()` callback\n * and calls `moveForm()` either directly or via a custom event hook.\n */\n return\n }\n\n /*\n * Third party comments systems can hook into this function via the global scope,\n * therefore the click event needs to reference the global scope.\n */\n follow = window.addComment.moveForm(commId, parentId, respondId, postId, replyTo);\n if (false === follow) {\n event.preventDefault()\n }\n }\n\n /**\n * Cancel event handler.\n *\n * @since 5.1.0\n *\n * @param {Event} event The calling event.\n */\n function cancelEvent (event) {\n let cancelLink = this;\n let temporaryFormId = config.temporaryFormId;\n let temporaryElement = getElementById(temporaryFormId);\n\n if (!temporaryElement || !respondElement) {\n // Conditions for cancel link fail.\n return\n }\n\n getElementById(config.parentIdFieldId).value = '0';\n\n // Move the respond form back in place of the temporary element.\n let headingText = temporaryElement.textContent;\n temporaryElement.parentNode.replaceChild(respondElement, temporaryElement);\n cancelLink.style.display = 'none';\n // Remove the \"flag\" (class) on the comments wrapper.\n commentsWrapperElement.classList.remove(config.replyingFlagClass);\n\n let replyHeadingElement = getElementById(config.commentReplyTitleId);\n let replyHeadingTextNode = replyHeadingElement && replyHeadingElement.firstChild;\n let replyLinkToParent = replyHeadingTextNode && replyHeadingTextNode.nextSibling;\n\n if (replyHeadingTextNode && replyHeadingTextNode.nodeType === Node.TEXT_NODE && headingText) {\n if (replyLinkToParent && 'A' === replyLinkToParent.nodeName && replyLinkToParent.id !== config.cancelReplyId) {\n replyLinkToParent.style.display = ''\n }\n\n replyHeadingTextNode.textContent = headingText\n } else {\n // We will use the replyTo for the submit button text.\n let submitButton = getElementById(config.commentFormSubmitId);\n if (submitButton) {\n submitButton.textContent = headingText\n }\n }\n\n event.preventDefault()\n }\n\n /**\n * Backward compatible getter of data-* attribute.\n *\n * Uses element.dataset if it exists, otherwise uses getAttribute.\n *\n * @since 5.1.0\n *\n * @param {HTMLElement} Element DOM element with the attribute.\n * @param {string} Attribute the attribute to get.\n *\n * @return {string}\n */\n function getDataAttribute (element, attribute) {\n if (supportsDataset) {\n return element.dataset[attribute]\n } else {\n return element.getAttribute('data-' + attribute)\n }\n }\n\n /**\n * Get element by ID.\n *\n * Local alias for document.getElementById.\n *\n * @since 5.1.0\n *\n * @param {HTMLElement} The requested element.\n */\n function getElementById (elementId) {\n return document.getElementById(elementId)\n }\n\n /**\n * Moves the reply form from its current position to a new location.\n *\n * @since 2.7.0\n *\n * @memberOf addComment\n *\n * @param {string} addBelowId HTML ID of element the form follows.\n * @param {string} commentId Database ID of comment being replied to.\n * @param {string} respondId HTML ID of 'respond' element.\n * @param {string} postId Database ID of the post.\n * @param {string} replyTo Form heading content.\n */\n function moveForm (addBelowId, commentId, respondId, postId, replyTo) {\n // Get elements based on their IDs.\n let addBelowElement = getElementById(addBelowId);\n respondElement = getElementById(respondId);\n\n // Get the hidden fields.\n let parentIdField = getElementById(config.parentIdFieldId);\n let postIdField = getElementById(config.postIdFieldId);\n let element;\n\n let replyHeading = getElementById(config.commentReplyTitleId);\n let replyHeadingTextNode = replyHeading && replyHeading.firstChild;\n let replyLinkToParent = replyHeadingTextNode && replyHeadingTextNode.nextSibling;\n\n if (!addBelowElement || !respondElement || !parentIdField) {\n // Missing key elements, fail.\n return\n }\n\n if ('undefined' === typeof replyTo) {\n replyTo = replyHeadingTextNode && replyHeadingTextNode.textContent\n }\n\n addPlaceHolder(respondElement);\n\n // Set the value of the post.\n if (postId && postIdField) {\n postIdField.value = postId\n }\n\n parentIdField.value = commentId;\n\n // Show the cancel link if the commentId is not zero.\n if (commentId && '0' !== commentId) {\n cancelElement.style.display = ''\n }\n // Insert the form in the new location.\n addBelowElement.parentNode.insertBefore(respondElement, addBelowElement.nextSibling);\n respondElement.classList.add('expanded');\n\n // Handle reply related textual changes like heading or button text.\n if (replyHeadingTextNode && replyHeadingTextNode.nodeType === Node.TEXT_NODE) {\n if (replyLinkToParent && 'A' === replyLinkToParent.nodeName && replyLinkToParent.id !== config.cancelReplyId) {\n replyLinkToParent.style.display = 'none'\n }\n\n replyHeadingTextNode.textContent = replyTo\n } else {\n // We will use the replyTo for the submit button text.\n let submitButton = getElementById(config.commentFormSubmitId);\n if (submitButton) {\n submitButton.textContent = replyTo\n }\n }\n\n /*\n * This is for backward compatibility with third party commenting systems\n * hooking into the event using older techniques.\n */\n cancelElement.onclick = function () {\n return false\n };\n\n // Try to focus on the configured field.\n let focusElement = getElementById(config.focusOnFieldId);\n if (focusElement) {\n focusElement.focus();\n /*\n * false is returned for backward compatibility with third party commenting systems\n * hooking into this function.\n */\n return false\n }\n // Focus on the first field in the comment form.\n try {\n for (let i = 0; i < commentFormElement.elements.length; i++) {\n element = commentFormElement.elements[i];\n if ('button' === element.type) {\n // We don't want to focus on buttons.\n continue;\n }\n\n\n // Skip form elements that are hidden or disabled.\n if ('hidden' === element.type || element.disabled || isCssHidden(element)) {\n continue\n }\n\n element.focus();\n // Stop after the first focusable element.\n break\n }\n } catch (e) {\n\n }\n\n /*\n * false is returned for backward compatibility with third party commenting systems\n * hooking into this function.\n */\n return false\n }\n\n function isCssHidden(element) {\n let cssHidden = false,\n style;\n\n // Get elements computed style.\n if ('getComputedStyle' in window) {\n // Modern browsers.\n style = window.getComputedStyle(element)\n } else if (document.documentElement.currentStyle) {\n // IE 8.\n style = element.currentStyle\n }\n\n /*\n * For display none, do the same thing jQuery does. For visibility,\n * check the element computed style since browsers are already doing\n * the job for us. In fact, the visibility computed style is the actual\n * computed value and already takes into account the element ancestors.\n */\n if ((element.offsetWidth <= 0 && element.offsetHeight <= 0) || style.visibility === 'hidden') {\n cssHidden = true\n }\n\n return cssHidden;\n }\n\n /**\n * Add placeholder element.\n *\n * Places a place holder element above the #respond element for\n * the form to be returned to if needs be.\n *\n * @since 2.7.0\n *\n * @param {HTMLelement} respondElement the #respond element holding comment form.\n */\n function addPlaceHolder (respondElement) {\n let temporaryFormId = config.temporaryFormId;\n let temporaryElement = getElementById(temporaryFormId);\n let replyElement = getElementById(config.commentReplyTitleId);\n let initialHeadingText = replyElement ? replyElement.firstChild.textContent : '';\n if (!replyElement) {\n // We need to search for the submit button since that appears to be our means of contextul text, not the reply heading.\n let submitButton = getElementById(config.commentFormSubmitId);\n if (submitButton) {\n initialHeadingText = submitButton.textContent\n }\n }\n\n if (temporaryElement) {\n // The element already exists - we want to move it.\n respondElement.parentNode.insertBefore(temporaryElement, respondElement);\n return\n }\n\n temporaryElement = document.createElement('div');\n temporaryElement.id = temporaryFormId;\n temporaryElement.style.display = 'none';\n temporaryElement.textContent = initialHeadingText;\n respondElement.parentNode.insertBefore(temporaryElement, respondElement);\n\n // Add the \"flag\" (class) on the comments wrapper.\n commentsWrapperElement.classList.add(config.replyingFlagClass)\n }\n\n return {\n init: init,\n moveForm: moveForm\n }\n})(window);\n"]}