{"version":3,"file":"useBuffer.mjs","sources":["../../../../../../../packages/vue-components/vc-align/src/hooks/useBuffer.tsx"],"sourcesContent":["import type { ComputedRef } from 'vue';\n\nexport default (callback: () => boolean, buffer: ComputedRef<number>) => {\n  let called = false;\n  let timeout = null;\n\n  function cancelTrigger() {\n    clearTimeout(timeout);\n  }\n\n  function trigger(force?: boolean) {\n    if (!called || force === true) {\n      if (callback() === false) {\n        // Not delay since callback cancelled self\n        return;\n      }\n\n      called = true;\n      cancelTrigger();\n      timeout = setTimeout(() => {\n        called = false;\n      }, buffer.value);\n    } else {\n      cancelTrigger();\n      timeout = setTimeout(() => {\n        called = false;\n        trigger();\n      }, buffer.value);\n    }\n  }\n\n  return [\n    trigger,\n    () => {\n      called = false;\n      cancelTrigger();\n    },\n  ];\n};\n"],"names":["callback","buffer","called","timeout","cancelTrigger","clearTimeout","trigger","force","setTimeout","value"],"mappings":"AAEA,gBAAe,CAACA,UAAyBC,MAAgC,KAAA;AACvE,EAAA,IAAIC,MAAS,GAAA,KAAA,CAAA;AACb,EAAA,IAAIC,OAAU,GAAA,IAAA,CAAA;AAEd,EAAA,SAASC,aAAgB,GAAA;AACvBC,IAAAA,YAAAA,CAAaF,OAAO,CAAA,CAAA;AAAA,GACtB;AAEA,EAAA,SAASG,QAAQC,KAAiB,EAAA;AAChC,IAAI,IAAA,CAACL,MAAUK,IAAAA,KAAAA,KAAU,IAAM,EAAA;AAC7B,MAAIP,IAAAA,QAAAA,OAAe,KAAO,EAAA;AAExB,QAAA,OAAA;AAAA,OACF;AAEAE,MAAS,MAAA,GAAA,IAAA,CAAA;AACTE,MAAc,aAAA,EAAA,CAAA;AACdD,MAAAA,OAAAA,GAAUK,WAAW,MAAM;AACzBN,QAAS,MAAA,GAAA,KAAA,CAAA;AAAA,OACX,EAAGD,OAAOQ,KAAK,CAAA,CAAA;AAAA,KACV,MAAA;AACLL,MAAc,aAAA,EAAA,CAAA;AACdD,MAAAA,OAAAA,GAAUK,WAAW,MAAM;AACzBN,QAAS,MAAA,GAAA,KAAA,CAAA;AACTI,QAAQ,OAAA,EAAA,CAAA;AAAA,OACV,EAAGL,OAAOQ,KAAK,CAAA,CAAA;AAAA,KACjB;AAAA,GACF;AAEA,EAAO,OAAA,CACLH,SACA,MAAM;AACJJ,IAAS,MAAA,GAAA,KAAA,CAAA;AACTE,IAAc,aAAA,EAAA,CAAA;AAAA,GACf,CAAA,CAAA;AAEL,CAAA;;;;"}