{"version":3,"sources":["collapsiblock.min.js"],"names":["Drupal","cookies","once","Collapsiblock","behaviors","collapsiblock","_step","cookieString","get","cookieData","JSON","parse","allowCollapseActivePages","settings","active_pages","slideSpeed","parseInt","slide_speed","cookieLifetime","cookie_lifetime","_iterator","_createForOfIteratorHelper","titleElements","s","n","done","titleElement","value","children","length","querySelectorAll","status","dataset","collapsiblockAction","useCookie","targetElement","nextElementSibling","classList","split","pop","collapseButton","setAttribute","id","innerHTML","add","document","getElementById","SlideElement","duration","remove","cookieOptions","path","drupalSettings","baseUrl","parseFloat","set","stringify","numberActiveMenuItems","undefined","contains","style","_ret","err","e","f","window","Cookies"],"mappings":"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","file":"collapsiblock.min.js","sourcesContent":["((Drupal, cookies, once) => {\n\n Drupal.Collapsiblock = Drupal.Collapsiblock || {}\n\n Drupal.behaviors.collapsiblock = {\n attach: (context, settings) => {\n\n const cookieString = cookies.get('collapsiblock')\n let cookieData = cookieString ? JSON.parse(cookieString) : {}\n const allowCollapseActivePages = settings.collapsiblock.active_pages\n const slideSpeed = parseInt(settings.collapsiblock.slide_speed, 10)\n const cookieLifetime = settings.collapsiblock.cookie_lifetime\n\n const titleElements = once('collapsiblock', document.querySelectorAll('.collapsiblockTitle'))\n\n for (const titleElement of titleElements) {\n // Only add the button if one or more of the children are visible.\n if (titleElement.children.length === 0\n || titleElement.children.length === titleElement.querySelectorAll('.visually-hidden').length) {\n continue\n }\n\n // Status values: 1 = not collapsible, 2 = collapsible and expanded,\n // 3 = collapsible and collapsed, 4 = always collapsed,\n // 5 = always expanded\n const status = parseInt(titleElement.dataset.collapsiblockAction)\n if (status === 1) {\n continue\n }\n\n const useCookie = (status === 2 || status === 3)\n\n let targetElement = titleElement.nextElementSibling\n while (targetElement && targetElement.hasAttribute('data-contextual-id')) {\n targetElement = targetElement.nextElementSibling\n }\n\n // If there's no block body, escape this iteration.\n if (!targetElement) {\n continue\n }\n\n const id = titleElement.id.split('-').pop()\n titleElement.innerHTML = ''\n targetElement.classList.add(['collapsiblockContent'])\n targetElement.setAttribute('id', 'collapse-' + id + '-content')\n\n const collapseButton = document.getElementById('#collapse-' + id)\n\n /**\n * Click event\n */\n titleElement.addEventListener('click', () => {\n if (titleElement.classList.contains('collapsiblockTitleCollapsed')) {\n titleElement.classList.remove('collapsiblockTitleCollapsed')\n targetElement.classList.remove('collapsiblockContentCollapsed')\n SlideElement.down(targetElement, { duration: slideSpeed })\n collapseButton.setAttribute('aria-expanded', true)\n\n if (useCookie) {\n cookieData[id] = 1\n }\n }\n else {\n titleElement.classList.add('collapsiblockTitleCollapsed')\n targetElement.classList.add('collapsiblockContentCollapsed')\n SlideElement.up(targetElement, { duration: slideSpeed })\n collapseButton.setAttribute('aria-expanded', false)\n\n if (useCookie) {\n cookieData[id] = 0\n }\n }\n\n // Mount cookie options.\n let cookieOptions = {\n path: drupalSettings.path.baseUrl\n }\n\n // Add cookie expiration time if it's setted on config.\n if (cookieLifetime) {\n cookieOptions['expires'] = parseFloat(cookieLifetime)\n }\n\n // Stringify the object in JSON format for saving in the cookie.\n cookies.set('collapsiblock', JSON.stringify(cookieData), cookieOptions)\n })\n\n /**\n * Initial state.\n *\n * Collapse if any of the following criteria are met:\n * - Blocks are always collapsed.\n * - Blocks are collapsed by default and there's no cookie data.\n * - Block is allowed to use cookie data and cookie says it should\n * be collapsed.\n */\n if (status === 4\n || (status === 3 && cookieData[id] === undefined)\n || (useCookie && cookieData[id] === 0)) {\n\n const numberActiveMenuItems = targetElement.querySelectorAll('a.is-active').length\n if ((numberActiveMenuItems > 0 && !allowCollapseActivePages)\n // Allow block content to assign class\n // 'collapsiblock-force-open' to it's content to force itself\n // to stay open. E.g. useful if block contains a form that was\n // just ajaxly updated and should be visible\n || targetElement.classList.contains('collapsiblock-force-open')\n || targetElement.querySelectorAll('.collapsiblock-force-open').length > 0) {\n collapseButton.setAttribute('aria-expanded', true)\n continue\n }\n\n titleElement.classList.add('collapsiblockTitleCollapsed')\n targetElement.classList.add('collapsiblockContentCollapsed')\n targetElement.style.display = 'none'\n collapseButton.setAttribute('aria-expanded', false)\n }\n else {\n collapseButton.setAttribute('aria-expanded', true)\n }\n }\n\n }\n }\n})(Drupal, window.Cookies, once)\n"]}