{"version":3,"file":"useDelayReset.cjs","sources":["../../../../../../../packages/vue-components/vc-select/src/hooks/useDelayReset.ts"],"sourcesContent":["import type { Ref } from 'vue';\nimport { onMounted, shallowRef } from 'vue';\n\n/**\n * Similar with `useLock`, but this hook will always execute last value.\n * When set to `true`, it will keep `true` for a short time even if `false` is set.\n */\nexport default function useDelayReset(\n  timeout = 10,\n): [Ref<boolean>, (val: boolean, callback?: () => void) => void, () => void] {\n  const bool = shallowRef(false);\n  let delay: any;\n\n  const cancelLatest = () => {\n    clearTimeout(delay);\n  };\n\n  onMounted(() => {\n    cancelLatest();\n  });\n  const delaySetBool = (value: boolean, callback: () => void) => {\n    cancelLatest();\n    delay = setTimeout(() => {\n      bool.value = value;\n      if (callback)\n        callback();\n    }, timeout);\n  };\n\n  return [bool, delaySetBool, cancelLatest];\n}\n"],"names":["shallowRef","onMounted"],"mappings":";;;;;;AAOwB,SAAA,aAAA,CACtB,UAAU,EACiE,EAAA;AAC3E,EAAM,MAAA,IAAA,GAAOA,eAAW,KAAK,CAAA,CAAA;AAC7B,EAAI,IAAA,KAAA,CAAA;AAEJ,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AAAA,GACpB,CAAA;AAEA,EAAAC,aAAA,CAAU,MAAM;AACd,IAAa,YAAA,EAAA,CAAA;AAAA,GACd,CAAA,CAAA;AACD,EAAM,MAAA,YAAA,GAAe,CAAC,KAAA,EAAgB,QAAyB,KAAA;AAC7D,IAAa,YAAA,EAAA,CAAA;AACb,IAAA,KAAA,GAAQ,WAAW,MAAM;AACvB,MAAA,IAAA,CAAK,KAAQ,GAAA,KAAA,CAAA;AACb,MAAI,IAAA,QAAA;AACF,QAAS,QAAA,EAAA,CAAA;AAAA,OACV,OAAO,CAAA,CAAA;AAAA,GACZ,CAAA;AAEA,EAAO,OAAA,CAAC,IAAM,EAAA,YAAA,EAAc,YAAY,CAAA,CAAA;AAC1C;;;;"}