{"version":3,"file":"useLock.cjs","sources":["../../../../../../../packages/vue-components/vc-select/src/hooks/useLock.ts"],"sourcesContent":["import { onBeforeUnmount } from 'vue';\n\n/**\n * Locker return cached mark.\n * If set to `true`, will return `true` in a short time even if set `false`.\n * If set to `false` and then set to `true`, will change to `true`.\n * And after time duration, it will back to `null` automatically.\n */\nexport default function useLock(duration = 250): [() => boolean | null, (lock: boolean) => void] {\n  let lock: boolean | null = null;\n  let timeout: any;\n\n  onBeforeUnmount(() => {\n    clearTimeout(timeout);\n  });\n\n  function doLock(locked: boolean) {\n    if (locked || lock === null)\n      lock = locked;\n\n    clearTimeout(timeout);\n    timeout = setTimeout(() => {\n      lock = null;\n    }, duration);\n  }\n\n  return [() => lock, doLock];\n}\n"],"names":["onBeforeUnmount"],"mappings":";;;;;;AAQwB,SAAA,OAAA,CAAQ,WAAW,GAAsD,EAAA;AAC/F,EAAA,IAAI,IAAuB,GAAA,IAAA,CAAA;AAC3B,EAAI,IAAA,OAAA,CAAA;AAEJ,EAAAA,mBAAA,CAAgB,MAAM;AACpB,IAAA,YAAA,CAAa,OAAO,CAAA,CAAA;AAAA,GACrB,CAAA,CAAA;AAED,EAAA,SAAS,OAAO,MAAiB,EAAA;AAC/B,IAAA,IAAI,UAAU,IAAS,KAAA,IAAA;AACrB,MAAO,IAAA,GAAA,MAAA,CAAA;AAET,IAAA,YAAA,CAAa,OAAO,CAAA,CAAA;AACpB,IAAA,OAAA,GAAU,WAAW,MAAM;AACzB,MAAO,IAAA,GAAA,IAAA,CAAA;AAAA,OACN,QAAQ,CAAA,CAAA;AAAA,GACb;AAEA,EAAO,OAAA,CAAC,MAAM,IAAA,EAAM,MAAM,CAAA,CAAA;AAC5B;;;;"}