{"version":3,"file":"slide-Cvdrki2g.js","sources":["../../../app/frontend/javascript/components/animations/slide.js"],"sourcesContent":["import resized from \"@/javascript/components/events/resized\"\nimport wait from \"@/javascript/components/tools/wait\"\n\nconst autoHandlers = {\n height: (elem) => elem.offsetHeight,\n width: (elem) => elem.offsetWidth\n}\n\nconst getStyle = (element, property) => {\n let value = (element.computedStyles ||= getComputedStyle(element))[property]\n const handler = autoHandlers[property]\n\n if(value === 'auto' && handler) {\n value = handler(element)\n }\n\n return value\n}\n\nconst fixStyle = (element, property, opts = {}) => {\n const value = getStyle(element, property)\n\n if(opts.except && opts.except.includes(value)) {\n return\n }\n\n element.style.setProperty(property, value)\n return value\n}\n\nexport function slideDown (element, time) {\n const currentHeight = getStyle(element, 'height')\n const startDisplay = fixStyle(element, 'display', {except: ['none']})\n\n return Promise.resolve()\n .then(function() {\n element.style.setProperty('overflow', 'hidden')\n element.style.setProperty('display', 'block')\n if (currentHeight == 0 || !element.dataset.targetHeight){\n element.classList.remove('slide-up-down')\n element.style.setProperty('visibility', 'hidden')\n element.style.removeProperty('height')\n element.dataset.targetHeight = getStyle(element, 'height')\n element.style.removeProperty('visibility')\n element.style.setProperty('--transitionTime' , '0ms')\n element.style.setProperty('--targetHeight' , '0px')\n element.classList.add('slide-up-down')\n }\n })\n .then(() => wait(1)) // wait for browser to set initial height\n .then(() => {\n element.style.setProperty('--transitionTime' , time + 'ms')\n element.style.setProperty('--targetHeight' , element.dataset.targetHeight)\n element.classList.add('slide-up-down')\n element.style.setProperty('display', startDisplay)\n })\n}\n\nexport function slideUp (element, time) {\n return Promise.resolve()\n .then(function() {\n element.style.setProperty('overflow', 'hidden')\n element.style.setProperty('--transitionTime' , time + 'ms')\n element.style.setProperty('--targetHeight' , '0px')\n element.classList.add('slide-up-down')\n })\n .then(() => wait(time))\n .then(() => {\n element.style.setProperty('display', 'none')\n })\n}\n\n// TODO: get rid of this when remove_block.js.erb is removed\nwindow.slideUp = slideUp\n\nexport function slideToggle (element, time) {\n if(element.offsetHeight) {\n return slideUp(element, time)\n } else {\n return slideDown(element, time)\n }\n}\n\nexport function slideTransition (element, time, promiseOrFunction) {\n const startHeight = fixStyle(element, 'height')\n const startWidth = fixStyle(element, 'width')\n const startDisplay = fixStyle(element, 'display', {except: ['none']})\n\n if(!element.animationEndEnabled) {\n element.animationEndEnabled = true\n element.addEventListener('animationend', (e) => {\n element.style.removeProperty('hidden')\n element.style.removeProperty('display')\n element.classList.remove('slide-transition')\n resized(element)\n })\n }\n\n return Promise.resolve()\n .then(function() {\n element.style.setProperty('overflow', 'hidden')\n element.classList.remove('slide-transition')\n })\n .then(() => {\n if(typeof(promiseOrFunction) == 'function'){\n return promiseOrFunction()\n } else {\n return promiseOrFunction\n }\n })\n .then(() => wait(1))\n .then(() => {\n element.style.removeProperty('height')\n element.style.removeProperty('width')\n element.style.removeProperty('display')\n const targetHeight = getStyle(element, 'height')\n const targetWidth = getStyle(element, 'width')\n element.style.setProperty('display', startDisplay)\n element.style.setProperty('--startHeight' , startHeight)\n element.style.setProperty('--startWidth' , startWidth)\n element.style.setProperty('--targetHeight' , targetHeight)\n element.style.setProperty('--targetWidth' , targetWidth)\n element.style.setProperty('--transitionTime' , time + 'ms')\n\n element.classList.add('slide-transition') // start animation\n })\n .then(() => wait(time))\n .then(() => {\n element.style.removeProperty('display')\n element.style.removeProperty('overflow')\n element.classList.remove('slide-transition')\n })\n}\n\n"],"names":["autoHandlers","elem","getStyle","element","property","value","handler","fixStyle","opts","slideDown","time","currentHeight","startDisplay","wait","slideUp","slideToggle","slideTransition","promiseOrFunction","startHeight","startWidth","e","resized","targetHeight","targetWidth"],"mappings":"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"}