{"version":3,"file":"backtop.vue2.mjs","sources":["../../../../../packages/components/backtop/src/backtop.vue"],"sourcesContent":["<script lang=\"ts\">\nconst COMPONENT_NAME = 'ElBacktop'\n\nimport { defineComponent as __MACROS_defineComponent } from \"vue\";\nexport default /*#__PURE__*/ __MACROS_defineComponent({\n  name: 'ElBacktop',\n});</script>\n<template>\n  <transition :name=\"`${ns.namespace}-fade-in`\">\n    <div\n      v-if=\"visible\"\n      :style=\"{\n        right: styleRight,\n        bottom: styleBottom,\n      }\"\n      :class=\"ns.b()\"\n      @click.stop=\"handleClick\"\n    >\n      <slot>\n        <el-icon :class=\"ns.e('icon')\"><caret-top /></el-icon>\n      </slot>\n    </div>\n  </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, computed, onMounted, shallowRef } from 'vue'\nimport { useEventListener, useThrottleFn } from '@vueuse/core'\nimport { ElIcon } from '@element-ultra/components/icon'\nimport { easeInOutCubic, throwError } from '@element-ultra/utils'\nimport { CaretTop } from 'icon-ultra'\nimport { useNamespace } from '@element-ultra/hooks'\n\nimport { backtopEmits, backtopProps } from './backtop'\n\n\n\n\n\nconst props = defineProps(backtopProps)\nconst emit = defineEmits(backtopEmits)\n\nconst ns = useNamespace('backtop')\nconst el = shallowRef<HTMLElement | undefined>(document.documentElement)\nconst container = shallowRef<Document | HTMLElement>(document)\nconst visible = ref(false)\nconst styleBottom = computed(() => `${props.bottom}px`)\nconst styleRight = computed(() => `${props.right}px`)\n\nconst scrollToTop = () => {\n  if (!el.value) return\n  const beginTime = Date.now()\n  const beginValue = el.value.scrollTop\n  const frameFunc = () => {\n    if (!el.value) return\n    const progress = (Date.now() - beginTime) / 500\n    if (progress < 1) {\n      el.value.scrollTop = beginValue * (1 - easeInOutCubic(progress))\n      requestAnimationFrame(frameFunc)\n    } else {\n      el.value.scrollTop = 0\n    }\n  }\n  requestAnimationFrame(frameFunc)\n}\nconst handleScroll = () => {\n  if (el.value) visible.value = el.value.scrollTop >= props.visibilityHeight\n}\nconst handleClick = (event: MouseEvent) => {\n  scrollToTop()\n  emit('click', event)\n}\n\nconst handleScrollThrottled = useThrottleFn(handleScroll, 300)\n\nonMounted(() => {\n  if (props.target) {\n    el.value = document.querySelector<HTMLElement>(props.target) ?? undefined\n    if (!el.value) {\n      throwError(COMPONENT_NAME, `target is not existed: ${props.target}`)\n    }\n    container.value = el.value\n  }\n\n  useEventListener(container, 'scroll', handleScrollThrottled)\n})\n</script>\n"],"names":["__MACROS_defineComponent"],"mappings":";;;;;;;;;;;;;AACA,MAAM,cAAiB,GAAA,WAAA,CAAA;AAGvB,MAA6B,cAAAA,eAAyB,CAAA;AAAA,EACpD,IAAM,EAAA,WAAA;AACR,CAAC,CAAA,CAAA;;;;;;;AAoCD,IAAM,MAAA,EAAA,GAAK,aAAa,SAAS,CAAA,CAAA;AACjC,IAAM,MAAA,EAAA,GAAK,UAAoC,CAAA,QAAA,CAAS,eAAe,CAAA,CAAA;AACvE,IAAM,MAAA,SAAA,GAAY,WAAmC,QAAQ,CAAA,CAAA;AAC7D,IAAM,MAAA,OAAA,GAAU,IAAI,KAAK,CAAA,CAAA;AACzB,IAAA,MAAM,WAAc,GAAA,QAAA,CAAS,MAAM,CAAA,EAAG,MAAM,MAAU,CAAA,EAAA,CAAA,CAAA,CAAA;AACtD,IAAA,MAAM,UAAa,GAAA,QAAA,CAAS,MAAM,CAAA,EAAG,MAAM,KAAS,CAAA,EAAA,CAAA,CAAA,CAAA;AAEpD,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,IAAI,CAAC,EAAG,CAAA,KAAA;AAAO,QAAA,OAAA;AACf,MAAM,MAAA,SAAA,GAAY,KAAK,GAAI,EAAA,CAAA;AAC3B,MAAM,MAAA,UAAA,GAAa,GAAG,KAAM,CAAA,SAAA,CAAA;AAC5B,MAAA,MAAM,YAAY,MAAM;AACtB,QAAA,IAAI,CAAC,EAAG,CAAA,KAAA;AAAO,UAAA,OAAA;AACf,QAAA,MAAM,QAAY,GAAA,CAAA,IAAA,CAAK,GAAI,EAAA,GAAI,SAAa,IAAA,GAAA,CAAA;AAC5C,QAAA,IAAI,WAAW,CAAG,EAAA;AAChB,UAAA,EAAA,CAAG,KAAM,CAAA,SAAA,GAAY,UAAc,IAAA,CAAA,GAAI,eAAe,QAAQ,CAAA,CAAA,CAAA;AAC9D,UAAA,qBAAA,CAAsB,SAAS,CAAA,CAAA;AAAA,SAC1B,MAAA;AACL,UAAA,EAAA,CAAG,MAAM,SAAY,GAAA,CAAA,CAAA;AAAA,SACvB;AAAA,OACF,CAAA;AACA,MAAA,qBAAA,CAAsB,SAAS,CAAA,CAAA;AAAA,KACjC,CAAA;AACA,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,IAAI,EAAG,CAAA,KAAA;AAAO,QAAA,OAAA,CAAQ,KAAQ,GAAA,EAAA,CAAG,KAAM,CAAA,SAAA,IAAa,KAAM,CAAA,gBAAA,CAAA;AAAA,KAC5D,CAAA;AACA,IAAM,MAAA,WAAA,GAAc,CAAC,KAAsB,KAAA;AACzC,MAAY,WAAA,EAAA,CAAA;AACZ,MAAA,IAAA,CAAK,SAAS,KAAK,CAAA,CAAA;AAAA,KACrB,CAAA;AAEA,IAAM,MAAA,qBAAA,GAAwB,aAAc,CAAA,YAAA,EAAc,GAAG,CAAA,CAAA;AAE7D,IAAA,SAAA,CAAU,MAAM;;AACd,MAAA,IAAI,MAAM,MAAQ,EAAA;AAChB,QAAA,EAAA,CAAG,SAAQ,EAAS,GAAA,QAAA,CAAA,aAAA,CAA2B,KAAM,CAAA,MAAM,MAAhD,IAAqD,GAAA,EAAA,GAAA,KAAA,CAAA,CAAA;AAChE,QAAI,IAAA,CAAC,GAAG,KAAO,EAAA;AACb,UAAW,UAAA,CAAA,cAAA,EAAgB,CAA0B,uBAAA,EAAA,KAAA,CAAM,MAAQ,CAAA,CAAA,CAAA,CAAA;AAAA,SACrE;AACA,QAAA,SAAA,CAAU,QAAQ,EAAG,CAAA,KAAA,CAAA;AAAA,OACvB;AAEA,MAAiB,gBAAA,CAAA,SAAA,EAAW,UAAU,qBAAqB,CAAA,CAAA;AAAA,KAC5D,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}