(function () { const COPY_TEXT = "Click to copy survey questions"; const COPIED_TEXT = "Copied!"; let tippyInstances = []; function isTippyUsed() { return document.querySelectorAll('#c-copy-to-clipboard-txt').length > 0; } function loadScript(src, callback) { const script = document.createElement('script'); script.src = src; script.async = true; script.onload = callback; document.head.appendChild(script); } function loadStyle(href) { const link = document.createElement('link'); link.rel = 'stylesheet'; link.href = href; document.head.appendChild(link); } function initTippy() { if (typeof tippy === 'undefined') return; tippyInstances = tippy('#c-copy-to-clipboard-txt', { content: COPY_TEXT, hideOnClick: false, animation: 'scale' }); console.log('Tippy initialized'); } function bootstrapTippy() { loadStyle('https://unpkg.com/tippy.js@6/animations/scale.css'); loadScript('https://unpkg.com/@popperjs/core@2', function () { loadScript('https://unpkg.com/tippy.js@6', initTippy); }); } function extractListTextUntilH2(element) { let listContent = ''; let sibling = element.nextElementSibling; while (sibling && sibling.id !== 'copy-till') { if (sibling.tagName === 'OL') { listContent += convertListToText(sibling) + '\n'; } if (sibling.tagName === 'UL') { sibling.querySelectorAll('li').forEach(item => { listContent += item.textContent.trim() + ':\n'; }); } if (sibling.tagName === 'H3') { listContent += sibling.textContent.trim() + '\n'; } sibling = sibling.nextElementSibling; } return listContent; } function convertListToText(olElement) { let text = ''; const items = olElement.getElementsByTagName('li'); for (let i = 0; i < items.length; i++) { text += (i + 1) + '. ' + items[i].textContent.trim() + '\n'; } return text; } window.selectNearestList = function (button) { const buttons = document.querySelectorAll('#c-copy-to-clipboard-txt'); const index = Array.from(buttons).indexOf(button); navigator.clipboard.writeText(extractListTextUntilH2(button)); if (tippyInstances[index]) { tippyInstances[index].setContent(COPIED_TEXT); setTimeout(() => { tippyInstances[index].setContent(COPY_TEXT); }, 2000); } }; document.addEventListener('DOMContentLoaded', function () { if (isTippyUsed()) { bootstrapTippy(); } }); })();