{"version":3,"file":"collapse-transition.vue.mjs","sources":["../../../../../packages/components/collapse-transition/src/collapse-transition.vue"],"sourcesContent":["<template>\n  <transition :name=\"ns.b()\" v-on=\"on\">\n    <slot></slot>\n  </transition>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, shallowRef } from 'vue'\nimport { useNamespace } from '@element-ultra/hooks'\n\nexport default defineComponent({\n  name: 'ElCollapseTransition',\n  setup(props, { attrs }) {\n    const ns = useNamespace('collapse-transition')\n\n    return {\n      ns,\n      on: {\n        beforeEnter(el) {\n          if (!el.dataset) el.dataset = {}\n\n          el.dataset.oldPaddingTop = el.style.paddingTop\n          el.dataset.oldPaddingBottom = el.style.paddingBottom\n\n          el.style.maxHeight = 0\n          el.style.paddingTop = 0\n          el.style.paddingBottom = 0\n        },\n\n        enter(el) {\n          el.dataset.oldOverflow = el.style.overflow\n          if (el.scrollHeight !== 0) {\n            el.style.maxHeight = `${el.scrollHeight}px`\n            el.style.paddingTop = el.dataset.oldPaddingTop\n            el.style.paddingBottom = el.dataset.oldPaddingBottom\n          } else {\n            el.style.maxHeight = 0\n            el.style.paddingTop = el.dataset.oldPaddingTop\n            el.style.paddingBottom = el.dataset.oldPaddingBottom\n          }\n\n          el.style.overflow = 'hidden'\n        },\n\n        afterEnter(el) {\n          el.style.maxHeight = ''\n          el.style.overflow = el.dataset.oldOverflow\n          let style = (attrs.style || {}) as Record<string, any>\n          Object.keys(style).forEach((key) => {\n            let  _key = key.replace(/([A-Z])/g, (_, c) => `-${c.toLowerCase()}`)\n            el.style[_key] = style[key]\n          })\n        },\n\n        beforeLeave(el) {\n          if (!el.dataset) el.dataset = {}\n          el.dataset.oldPaddingTop = el.style.paddingTop\n          el.dataset.oldPaddingBottom = el.style.paddingBottom\n          el.dataset.oldOverflow = el.style.overflow\n\n          el.style.maxHeight = `${el.scrollHeight}px`\n          el.style.overflow = 'hidden'\n        },\n\n        leave(el) {\n          if (el.scrollHeight !== 0) {\n            el.style.maxHeight = 0\n            el.style.paddingTop = 0\n            el.style.paddingBottom = 0\n          }\n        },\n\n        afterLeave(el) {\n          el.style.maxHeight = ''\n          el.style.overflow = el.dataset.oldOverflow\n          el.style.paddingTop = el.dataset.oldPaddingTop\n          el.style.paddingBottom = el.dataset.oldPaddingBottom\n        },\n      },\n    }\n  },\n})\n</script>\n"],"names":["_openBlock","_createBlock","_Transition","_mergeProps","_withCtx"],"mappings":";;;;SACmB,YAAM,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,QAAA,EAAA;AAAI,EAAA,OAAAA,SAAS,EAAA,EAADC,WAAA,CAAAC,UAAA,EAAAC,UAAA,CAAA;AAAA,IAAA,IAAA,EAAA,IAAA,CAAA,EAAA,CAAA,CAAA,EAAA;AAAA,gBACjC,IAAa,CAAA,EAAA,CAAA,CAAA,EAAA;AAAA,IAAA,OAAA,EAAAC,QAAA,MAAA;AAAA;;;;;;;;;;"}