{"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 '@hd-front-end/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,iBAAoB,GAAA,CAC/B,OACA,EAAA,QAAA,GAAyB,CACtB,KAAA;AACH,EAAA,IAAI,QAAa,KAAA,CAAA;AAAG,IAAO,OAAA,OAAA,CAAA;AAC3B,EAAA,MAAM,UAAU,QAAS,CAAA,QAAQ,CAAK,IAAA,OAAA,CAAQ,SAAS,OAAO,CAAA,CAAA;AAC9D,EAAM,MAAA,SAAA,GAAY,IAAI,OAAO,CAAA,CAAA;AAC7B,EAAA,IAAI,aAAsD,GAAA,IAAA,CAAA;AAE1D,EAAM,MAAA,kBAAA,GAAqB,CAAC,KAA8B,KAAA;AACxD,IAAI,IAAA,WAAA,CAAY,KAAK,CAAG,EAAA;AACtB,MAAA,SAAA,CAAU,QAAQ,OAAQ,CAAA,KAAA,CAAA;AAC1B,MAAA,OAAA;AAAA,KACF;AACA,IAAA,IAAI,aAAe,EAAA;AACjB,MAAA,YAAA,CAAa,aAAa,CAAA,CAAA;AAAA,KAC5B;AACA,IAAA,aAAA,GAAgB,WAAW,MAAM;AAC/B,MAAA,SAAA,CAAU,QAAQ,OAAQ,CAAA,KAAA,CAAA;AAAA,OACzB,KAAK,CAAA,CAAA;AAAA,GACV,CAAA;AAEA,EAAM,MAAA,UAAA,GAAa,CAAC,IAAiC,KAAA;AACnD,IAAA,IAAI,SAAS,SAAW,EAAA;AACtB,MAAI,IAAA,QAAA,CAAS,QAAQ,CAAG,EAAA;AACtB,QAAA,kBAAA,CAAmB,QAAQ,CAAA,CAAA;AAAA,OACtB,MAAA;AACL,QAAA,kBAAA,CAAmB,SAAS,OAAO,CAAA,CAAA;AAAA,OACrC;AAAA,KACK,MAAA;AACL,MAAI,IAAA,QAAA,CAAS,QAAQ,CAAG,EAAA;AACtB,QAAA,kBAAA,CAAmB,SAAS,QAAQ,CAAA,CAAA;AAAA,OAC/B,MAAA;AACL,QAAA,SAAA,CAAU,KAAQ,GAAA,KAAA,CAAA;AAAA,OACpB;AAAA,KACF;AAAA,GACF,CAAA;AAEA,EAAU,SAAA,CAAA,MAAM,UAAW,CAAA,SAAS,CAAC,CAAA,CAAA;AAErC,EAAA,KAAA;AAAA,IACE,MAAM,OAAQ,CAAA,KAAA;AAAA,IACd,CAAC,GAAQ,KAAA;AACP,MAAW,UAAA,CAAA,GAAA,GAAM,YAAY,UAAU,CAAA,CAAA;AAAA,KACzC;AAAA,GACF,CAAA;AAEA,EAAO,OAAA,SAAA,CAAA;AACT;;;;"}