{"version":3,"file":"transitionVerticalCollapse.obs.js","sources":["../../../Framework/Controls/transitionVerticalCollapse.obs","../../../node_modules/style-inject/dist/style-inject.es.js"],"sourcesContent":["<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\r\n<template>\r\n    <transition\r\n                enter-active-class=\"vertical-collapse-enter-active\"\r\n                leave-active-class=\"vertical-collapse-leave-active\"\r\n                @before-enter=\"beforeEnter\"\r\n                @enter=\"enter\"\r\n                @after-enter=\"afterEnter\"\r\n                @before-leave=\"beforeLeave\"\r\n                @leave=\"leave\"\r\n                @after-leave=\"afterLeave\">\r\n        <slot />\r\n    </transition>\r\n</template>\r\n\r\n<style scoped>\r\n.vertical-collapse-enter-active,\r\n.vertical-collapse-leave-active {\r\n    overflow: hidden;\r\n    transition-property: height, padding-top, padding-bottom;\r\n    transition-duration: var(--transition-speed);\r\n    transition-timing-function: ease-in-out;\r\n}\r\n</style>\r\n\r\n<script setup lang=\"ts\">\r\n    import { computed, PropType } from \"vue\";\r\n\r\n    type CollapseState = {\r\n        display: string;\r\n        computedPaddingTop: string;\r\n        computedPaddingBottom: string;\r\n    };\r\n\r\n    const props = defineProps({\r\n        speed: {\r\n            type: String as PropType<\"normal\" | \"fast\" | \"slow\">,\r\n            default: \"normal\"\r\n        }\r\n    });\r\n\r\n    /**\r\n     * Called before the element begins to enter the DOM.\r\n     *\r\n     * @param element The element that will be entering the DOM.\r\n     */\r\n    function beforeEnter(element: Element): void {\r\n        if (!(element instanceof HTMLElement)) {\r\n            return;\r\n        }\r\n\r\n        // Save any values that will be used during the animation.\r\n        const state: CollapseState = {\r\n            display: element.style.display,\r\n            computedPaddingTop: getComputedStyle(element).paddingTop,\r\n            computedPaddingBottom: getComputedStyle(element).paddingBottom\r\n        };\r\n\r\n        element.dataset.transitionCollapseState = JSON.stringify(state);\r\n\r\n        // Reset all the styles we will be transitioning unless they already\r\n        // have values (which probably means we are aborting an expand).\r\n        if (!element.style.height) {\r\n            element.style.height = \"0px\";\r\n        }\r\n\r\n        if (!element.style.paddingTop) {\r\n            element.style.paddingTop = \"0px\";\r\n        }\r\n\r\n        if (!element.style.paddingBottom) {\r\n            element.style.paddingBottom = \"0px\";\r\n        }\r\n\r\n        element.style.display = \"\";\r\n        element.style.setProperty(\"--transition-speed\", speed.value);\r\n    }\r\n\r\n    /**\r\n     * Called when the element has entered the DOM.\r\n     *\r\n     * @param element The element that has entered the DOM.\r\n     */\r\n    function enter(element: Element): void {\r\n        if (!(element instanceof HTMLElement)) {\r\n            return;\r\n        }\r\n\r\n        // Set values that will cause the vertical space to expand.\r\n        requestAnimationFrame(() => {\r\n            const state = JSON.parse(element.dataset.transitionCollapseState ?? \"\") as CollapseState;\r\n            const verticalPadding = (parseInt(state.computedPaddingTop) || 0) + (parseInt(state.computedPaddingBottom) || 0);\r\n\r\n            element.style.height = `${element.scrollHeight + verticalPadding}px`;\r\n            element.style.paddingTop = state.computedPaddingTop;\r\n            element.style.paddingBottom = state.computedPaddingBottom;\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Called after the element has entered the DOM and the animation has completed.\r\n     *\r\n     * @param element The element that entered the DOM.\r\n     */\r\n    function afterEnter(element: Element): void {\r\n        if (!(element instanceof HTMLElement)) {\r\n            return;\r\n        }\r\n\r\n        const state = JSON.parse(element.dataset.transitionCollapseState ?? \"\") as CollapseState;\r\n\r\n        // Reset all the explicit styles so they go back to implicit values.\r\n        element.style.height = \"\";\r\n        element.style.paddingTop = \"\";\r\n        element.style.paddingBottom = \"\";\r\n        element.style.display = state.display !== \"none\" ? state.display : \"\";\r\n        element.style.removeProperty(\"--transition-speed\");\r\n\r\n        delete element.dataset.transitionCollapseState;\r\n    }\r\n\r\n    /**\r\n     * Called before the element begins to leave the DOM.\r\n     *\r\n     * @param element The element that will be leaving the DOM.\r\n     */\r\n    function beforeLeave(element: Element): void {\r\n        if (!(element instanceof HTMLElement)) {\r\n            return;\r\n        }\r\n\r\n        // Set the height explicitely so the CSS animation will trigger.\r\n        element.style.height = `${element.offsetHeight}px`;\r\n        element.style.setProperty(\"--transition-speed\", speed.value);\r\n    }\r\n\r\n    /**\r\n     * Called when the element should begin animation for leaving the DOM.\r\n     *\r\n     * @param element The element that is leaving the DOM.\r\n     */\r\n    function leave(element: Element): void {\r\n        if (!(element instanceof HTMLElement)) {\r\n            return;\r\n        }\r\n\r\n        // Set values that will cause the vertical space to collapse.\r\n        requestAnimationFrame(() => {\r\n            element.style.height = \"0px\";\r\n            element.style.paddingTop = \"0px\";\r\n            element.style.paddingBottom = \"0px\";\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Called after the element has left the DOM and the animation has completed.\r\n     *\r\n     * @param element The element that left the DOM.\r\n     */\r\n    function afterLeave(element: Element): void {\r\n        if (!(element instanceof HTMLElement)) {\r\n            return;\r\n        }\r\n\r\n        // Reset all the explicit styles so they go back to implicit values.\r\n        element.style.height = \"\";\r\n        element.style.paddingTop = \"\";\r\n        element.style.paddingBottom = \"\";\r\n        element.style.removeProperty(\"--transition-speed\");\r\n    }\r\n\r\n    // These transition speeds come from jQuery's hide/show \"fast\" and \"slow\" options.\r\n    const speed = computed<string>(() => props.speed == \"fast\" ? \"0.2s\" : props.speed == \"slow\" ? \"0.6s\" : \"0.35s\");\r\n</script>\r\n","function styleInject(css, ref) {\n  if ( ref === void 0 ) ref = {};\n  var insertAt = ref.insertAt;\n\n  if (!css || typeof document === 'undefined') { return; }\n\n  var head = document.head || document.getElementsByTagName('head')[0];\n  var style = document.createElement('style');\n  style.type = 'text/css';\n\n  if (insertAt === 'top') {\n    if (head.firstChild) {\n      head.insertBefore(style, head.firstChild);\n    } else {\n      head.appendChild(style);\n    }\n  } else {\n    head.appendChild(style);\n  }\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    style.appendChild(document.createTextNode(css));\n  }\n}\n\nexport default styleInject;\n"],"names":["beforeEnter","element","HTMLElement","state","display","style","computedPaddingTop","getComputedStyle","paddingTop","computedPaddingBottom","paddingBottom","dataset","transitionCollapseState","JSON","stringify","height","setProperty","speed","value","enter","requestAnimationFrame","_element$dataset$tran","parse","verticalPadding","parseInt","concat","scrollHeight","afterEnter","_element$dataset$tran2","removeProperty","beforeLeave","offsetHeight","leave","afterLeave","computed","props","styleInject","css","ref","insertAt","document","head","getElementsByTagName","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode"],"mappings":"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"}