UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 2.81 kB
{"version":3,"file":"index.mjs","sources":["../../../../../packages/hooks/use-throttle-render/index.ts"],"sourcesContent":["import { onMounted, ref, watch } from 'vue'\nimport { isNumber, isObject, isUndefined } from '@element-plus/utils'\n\nimport type { Ref } from 'vue'\n\nexport type ThrottleType =\n | { leading?: number; trailing?: number; initVal?: boolean }\n | number\n\nexport const useThrottleRender = (\n loading: Ref<boolean>,\n throttle: ThrottleType = 0\n) => {\n if (throttle === 0) return loading\n const initVal = isObject(throttle) && Boolean(throttle.initVal)\n const throttled = ref(initVal)\n let timeoutHandle: ReturnType<typeof setTimeout> | null = null\n\n const dispatchThrottling = (timer: number | undefined) => {\n if (isUndefined(timer)) {\n throttled.value = loading.value\n return\n }\n if (timeoutHandle) {\n clearTimeout(timeoutHandle)\n }\n timeoutHandle = setTimeout(() => {\n throttled.value = loading.value\n }, timer)\n }\n\n const dispatcher = (type: 'leading' | 'trailing') => {\n if (type === 'leading') {\n if (isNumber(throttle)) {\n dispatchThrottling(throttle)\n } else {\n dispatchThrottling(throttle.leading)\n }\n } else {\n if (isObject(throttle)) {\n dispatchThrottling(throttle.trailing)\n } else {\n throttled.value = false\n }\n }\n }\n\n onMounted(() => dispatcher('leading'))\n\n watch(\n () => loading.value,\n (val) => {\n dispatcher(val ? 'leading' : 'trailing')\n }\n )\n\n return throttled\n}\n"],"names":[],"mappings":";;;;AASO,MAAM,iBAAA,GAAoB,CAC/B,OAAA,EACA,QAAA,GAAyB,CAAA,KACtB;AACH,EAAA,IAAI,QAAA,KAAa,GAAG,OAAO,OAAA;AAC3B,EAAA,MAAM,UAAU,QAAA,CAAS,QAAQ,CAAA,IAAK,OAAA,CAAQ,SAAS,OAAO,CAAA;AAC9D,EAAA,MAAM,SAAA,GAAY,IAAI,OAAO,CAAA;AAC7B,EAAA,IAAI,aAAA,GAAsD,IAAA;AAE1D,EAAA,MAAM,kBAAA,GAAqB,CAAC,KAAA,KAA8B;AACxD,IAAA,IAAI,WAAA,CAAY,KAAK,CAAA,EAAG;AACtB,MAAA,SAAA,CAAU,QAAQ,OAAA,CAAQ,KAAA;AAC1B,MAAA;AAAA,IACF;AACA,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,YAAA,CAAa,aAAa,CAAA;AAAA,IAC5B;AACA,IAAA,aAAA,GAAgB,WAAW,MAAM;AAC/B,MAAA,SAAA,CAAU,QAAQ,OAAA,CAAQ,KAAA;AAAA,IAC5B,GAAG,KAAK,CAAA;AAAA,EACV,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,CAAC,IAAA,KAAiC;AACnD,IAAA,IAAI,SAAS,SAAA,EAAW;AACtB,MAAA,IAAI,QAAA,CAAS,QAAQ,CAAA,EAAG;AACtB,QAAA,kBAAA,CAAmB,QAAQ,CAAA;AAAA,MAC7B,CAAA,MAAO;AACL,QAAA,kBAAA,CAAmB,SAAS,OAAO,CAAA;AAAA,MACrC;AAAA,IACF,CAAA,MAAO;AACL,MAAA,IAAI,QAAA,CAAS,QAAQ,CAAA,EAAG;AACtB,QAAA,kBAAA,CAAmB,SAAS,QAAQ,CAAA;AAAA,MACtC,CAAA,MAAO;AACL,QAAA,SAAA,CAAU,KAAA,GAAQ,KAAA;AAAA,MACpB;AAAA,IACF;AAAA,EACF,CAAA;AAEA,EAAA,SAAA,CAAU,MAAM,UAAA,CAAW,SAAS,CAAC,CAAA;AAErC,EAAA,KAAA;AAAA,IACE,MAAM,OAAA,CAAQ,KAAA;AAAA,IACd,CAAC,GAAA,KAAQ;AACP,MAAA,UAAA,CAAW,GAAA,GAAM,YAAY,UAAU,CAAA;AAAA,IACzC;AAAA,GACF;AAEA,EAAA,OAAO,SAAA;AACT;;;;"}