/** Add buttons to hide code cells */ var setCodeCellVisibility = function (inputField, kind) { // Update the image and class for hidden var id = inputField.getAttribute('data-id'); var codeCell = document.querySelector(`#${id} div.highlight`); if (kind === "visible") { codeCell.classList.remove('hidden'); inputField.checked = true; } else { codeCell.classList.add('hidden'); inputField.checked = false; } } var toggleCodeCellVisibility = function (event) { // The label is clicked, and now we decide what to do based on the input field's clicked status if (event.target.tagName === "LABEL") { var inputField = event.target.previousElementSibling; } else { // It is the span inside the target var inputField = event.target.parentElement.previousElementSibling; } if (inputField.checked === true) { setCodeCellVisibility(inputField, "visible"); } else { setCodeCellVisibility(inputField, "hidden"); } } // Button constructor const hideCodeButton = id => `` var addHideButton = function () { // If a hide button is already added, don't add another if (document.querySelector('div.tag_hide_input input') !== null) { return; } // Find the input cells and add a hide button pageElements['inputCells'].forEach(function (inputCell) { if (!inputCell.classList.contains("tag_hide_input")) { // Skip the cell if it doesn't have a hidecode class return; } const id = inputCell.getAttribute('id') // Insert the button just inside the end of the next div inputCell.querySelector('div.input').insertAdjacentHTML('beforeend', hideCodeButton(id)) // Set up the visibility toggle hideLink = document.querySelector(`#${id} div.inner_cell + input + label`); hideLink.addEventListener('click', toggleCodeCellVisibility) }); } // Initialize the hide buttos var initHiddenCells = function () { // Add hide buttons to the cells addHideButton(); // Toggle the code cells that should be hidden document.querySelectorAll('div.tag_hide_input input').forEach(function (item) { setCodeCellVisibility(item, 'hidden'); item.checked = true; }) } initFunction(initHiddenCells);