element-plus
Version:
A Component Library for Vue 3
1 lines • 2.04 kB
Source Map (JSON)
{"version":3,"file":"use-auto-resize.mjs","names":[],"sources":["../../../../../../../packages/components/table-v2/src/composables/use-auto-resize.ts"],"sourcesContent":["import { onBeforeUnmount, onMounted, ref, watch } from 'vue'\nimport { useResizeObserver } from '@vueuse/core'\n\nimport type { AutoResizerProps } from '../auto-resizer'\n\nconst useAutoResize = (props: AutoResizerProps) => {\n const sizer = ref<HTMLElement>()\n const width$ = ref(0)\n const height$ = ref(0)\n\n let resizerStopper: ReturnType<typeof useResizeObserver>['stop']\n onMounted(() => {\n resizerStopper = useResizeObserver(sizer, ([entry]) => {\n const { width, height } = entry.contentRect\n const { paddingLeft, paddingRight, paddingTop, paddingBottom } =\n getComputedStyle(entry.target)\n\n const left = Number.parseInt(paddingLeft) || 0\n const right = Number.parseInt(paddingRight) || 0\n const top = Number.parseInt(paddingTop) || 0\n const bottom = Number.parseInt(paddingBottom) || 0\n\n width$.value = width - left - right\n height$.value = height - top - bottom\n }).stop\n })\n\n onBeforeUnmount(() => {\n resizerStopper?.()\n })\n\n watch([width$, height$], ([width, height]) => {\n props.onResize?.({\n width,\n height,\n })\n })\n\n return {\n sizer,\n width: width$,\n height: height$,\n }\n}\n\nexport { useAutoResize }\n"],"mappings":";;;;AAKA,MAAM,iBAAiB,UAA4B;CACjD,MAAM,QAAQ,KAAkB;CAChC,MAAM,SAAS,IAAI,EAAE;CACrB,MAAM,UAAU,IAAI,EAAE;CAEtB,IAAI;AACJ,iBAAgB;AACd,mBAAiB,kBAAkB,QAAQ,CAAC,WAAW;GACrD,MAAM,EAAE,OAAO,WAAW,MAAM;GAChC,MAAM,EAAE,aAAa,cAAc,YAAY,kBAC7C,iBAAiB,MAAM,OAAO;GAEhC,MAAM,OAAO,OAAO,SAAS,YAAY,IAAI;GAC7C,MAAM,QAAQ,OAAO,SAAS,aAAa,IAAI;GAC/C,MAAM,MAAM,OAAO,SAAS,WAAW,IAAI;GAC3C,MAAM,SAAS,OAAO,SAAS,cAAc,IAAI;AAEjD,UAAO,QAAQ,QAAQ,OAAO;AAC9B,WAAQ,QAAQ,SAAS,MAAM;IAC/B,CAAC;GACH;AAEF,uBAAsB;AACpB,oBAAkB;GAClB;AAEF,OAAM,CAAC,QAAQ,QAAQ,GAAG,CAAC,OAAO,YAAY;AAC5C,QAAM,WAAW;GACf;GACA;GACD,CAAC;GACF;AAEF,QAAO;EACL;EACA,OAAO;EACP,QAAQ;EACT"}