{"version":3,"sources":["webpack:///./images/general.svg","webpack:///./modules/helpers/check_elements.js","webpack:///./modules/expanding_panels/create_btn.js","webpack:///./modules/expanding_panels/create_content.js","webpack:///./modules/expanding_panels/setup.js","webpack:///./modules/expanding_panels/tracker.js","webpack:///./modules/expanding_panels/expanding_panels.js"],"names":["module","exports","isElement","d","Element","checkElements","elms","reduce","check","elm","el","expanders","expanderBtn","inner","pressed","css","btnCss","GeneralSprite","expanderWrapper","conts","expander","outerHTML","dataset","expandedDefault","expanderClass","buttonClass","forEach","removeChild","insertAdjacentHTML","btn","querySelector","contents","innerContents","content","open","expanderContent","closed","contentWrapper","expandedClass","querySelectorAll","getElements","checker","expandedBtn","CreateBtn","expandedContent","CreateContent","createElements","height","sizes","getBoundingClientRect","animator","style","setAttribute","expandingSet","form","closest","addEventListener","e","key","disabled","submit","checkForm","preventDefault","getAttribute","toString","clickHandler","device","original","map","cloneNode","clone","i","checkDevices","json","JSON","parse","expandingPanel","devices","Array","isArray","includes","CheckDevices","set","SetUpExpander","innerHTML","document","length","vpDetect","ViewportDetect","callback","Tracker","getDevice","addCallback","track","global"],"mappings":"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","file":"expanding_panels-fe5c5d30.chunk.js","sourcesContent":["module.exports = \"/packs/images/general~a3ea5361ed0c41933f74c349c716810b.svg\";","export const isElement = d => d instanceof Element;\n\nexport const checkElements = (...elms) =>\n elms.reduce((check, elm) => {\n if (!check) return check;\n return isElement(elm);\n }, true);\n","import GeneralSprite from '../../images/general.svg';\n\nconst expanderWrapper = (inner, pressed = false, css = '', btnCss = '') => `\n
\n`;\n\nexport const unwrapButton = (el) => {\n if (el instanceof Element) {\n const original = el.querySelector('.expanding_panels__original');\n const btn = el.querySelector('.expanding_panels__expander');\n // Remove button\n if (btn instanceof Element) {\n el.removeChild(btn);\n }\n // Replace original\n if (original instanceof Element) {\n const unwrappedButton = original.innerHTML;\n\n el.insertAdjacentHTML('beforeend', unwrappedButton);\n }\n }\n};\n\nexport default ({ el, expanders }) => {\n const contents = expanders.reduce(\n (conts, expander) => conts + expander.outerHTML,\n ''\n );\n const expanderBtn = expanderWrapper(\n contents,\n el.dataset.expandedDefault,\n el.dataset.expanderClass,\n el.dataset.buttonClass\n );\n expanders.forEach((expander) => {\n el.removeChild(expander);\n });\n\n el.insertAdjacentHTML('afterbegin', expanderBtn);\n\n const btn = el.querySelector('.expanding_panels__btn');\n\n return btn instanceof Element ? btn : null;\n};\n","const contentWrapper = (inner, css = '', closed = true) => `\n \n`;\n\nexport const unwrapContent = el => {\n const content = el.querySelector('.expanding_panels__content');\n if (content instanceof Element) {\n const unwrappedContent = content.innerHTML;\n el.removeChild(content);\n el.insertAdjacentHTML('beforeend', unwrappedContent);\n }\n};\n\nexport default ({ el, contents }) => {\n const innerContents = contents.reduce((conts, content) => conts + content.outerHTML, '');\n\n const open = el.dataset.expandedDefault === 'true';\n\n const expanderContent = contentWrapper(innerContents, el.dataset.expandedClass, !open);\n\n contents.forEach(content => {\n el.removeChild(content);\n });\n el.insertAdjacentHTML('beforeend', expanderContent);\n\n const elm = el.querySelector('.expanding_panels__content');\n\n return elm;\n};\n","import CreateBtn from './create_btn';\nimport CreateContent from './create_content';\nimport { checkElements, isElement } from '../helpers/check_elements';\n\nconst Animation = (content, height) => () => {\n if (content.style.height === '0px') {\n content.style.height = `${height + 10}px`;\n content.setAttribute('aria-hidden', 'false');\n } else {\n content.style.height = '0px';\n content.setAttribute('aria-hidden', 'true');\n }\n};\n\nconst clickHandler = (btn, animator) => (e) => {\n e.preventDefault();\n const pressed = btn.getAttribute('aria-pressed') === 'false';\n btn.setAttribute('aria-pressed', pressed.toString());\n\n animator();\n};\n\nconst checkForm = (el) => {\n const form = el.closest('form');\n if (!form) return;\n\n form.addEventListener('keypress', (e) => {\n if (e.key === 'Enter') {\n el.disabled = true;\n form.submit();\n }\n });\n};\n\nconst createElements = (el, expanders, contents) => ({\n expandedBtn: CreateBtn({ el, expanders }),\n expandedContent: CreateContent({ el, contents }),\n});\n\nconst getElements = (el) => ({\n contents: [...el.querySelectorAll('[data-expanding-content]')],\n expanders: [...el.querySelectorAll('[data-expander]')],\n});\n\nconst checker = (contents, expanders) =>\n checkElements(...contents) && checkElements(...expanders);\n\nexport default (el) => {\n if (!isElement(el)) return;\n const { contents, expanders } = getElements(el);\n\n const open = el.dataset.expandedDefault === 'true';\n\n if (!checker(contents, expanders)) return;\n\n const { expandedBtn, expandedContent } = createElements(\n el,\n expanders,\n contents\n );\n\n if (!expandedContent || !expandedBtn) return;\n\n const sizes = expandedContent.getBoundingClientRect();\n\n const animator = Animation(expandedContent, sizes.height + 10);\n expandedContent.style.height = open ? `${sizes.height + 10}px` : 0;\n\n el.dataset.expandingSet = !open;\n\n checkForm(expandedBtn);\n expandedBtn.addEventListener('click', clickHandler(expandedBtn, animator));\n};\n","import SetUpExpander from './setup';\n// import curry from '../helpers/curry';\n\nconst clone = elms => elms.map(el => el.cloneNode(true));\n\nconst CheckDevices = el => {\n const json = JSON.parse(el.dataset.expandingPanel);\n const devices = Array.isArray(json) ? json : ['mobile'];\n return device => devices.includes(device);\n};\n\nexport default elms => {\n let device = '';\n const original = clone(elms);\n\n return d => {\n if (d !== device) {\n elms.forEach((el, i) => {\n const checkDevices = CheckDevices(el);\n\n const set = el.dataset.expandingSet || 'false';\n\n if (checkDevices(d) && set === 'false') {\n SetUpExpander(el);\n el.dataset.expandingSet = 'true';\n } else if (!checkDevices(d) && set === 'true') {\n el.innerHTML = original[i].innerHTML;\n el.dataset.expandingSet = 'false';\n }\n });\n }\n\n device = d;\n };\n};\n","import ViewportDetect from '@djforth/viewport-detection-fp';\nimport Tracker from './tracker';\nimport SetUpExpander from './setup';\n\nexport default () => {\n const elms = [...document.querySelectorAll('[data-expanding-panel]')];\n if (elms.length <= 0) return;\n\n const vpDetect = ViewportDetect();\n\n const callback = Tracker(elms);\n callback(vpDetect.getDevice());\n\n vpDetect.addCallback(callback);\n vpDetect.track();\n\n global.SetUpExpander = SetUpExpander;\n};\n"],"sourceRoot":""}