{"version":3,"file":"delay.mjs","names":["defer","propsFactory","makeDelayProps","closeDelay","Number","String","openDelay","useDelay","props","cb","clearDelay","runDelay","isOpening","delay","Promise","resolve","runOpenDelay","runCloseDelay"],"sources":["../../src/composables/delay.ts"],"sourcesContent":["// Utilities\nimport { defer, propsFactory } from '@/util'\n\n// Types\nexport interface DelayProps {\n  closeDelay?: number | string\n  openDelay?: number | string\n}\n\n// Composables\nexport const makeDelayProps = propsFactory({\n  closeDelay: [Number, String],\n  openDelay: [Number, String],\n}, 'delay')\n\nexport function useDelay (props: DelayProps, cb?: (value: boolean) => void) {\n  let clearDelay: (() => void) = () => {}\n\n  function runDelay (isOpening: boolean) {\n    clearDelay?.()\n\n    const delay = Number(isOpening ? props.openDelay : props.closeDelay)\n\n    return new Promise(resolve => {\n      clearDelay = defer(delay, () => {\n        cb?.(isOpening)\n        resolve(isOpening)\n      })\n    })\n  }\n\n  function runOpenDelay () {\n    return runDelay(true)\n  }\n\n  function runCloseDelay () {\n    return runDelay(false)\n  }\n\n  return {\n    clearDelay,\n    runOpenDelay,\n    runCloseDelay,\n  }\n}\n"],"mappings":"AAAA;AAAA,SACSA,KAAK,EAAEC,YAAY,6BAE5B;AAMA;AACA,OAAO,MAAMC,cAAc,GAAGD,YAAY,CAAC;EACzCE,UAAU,EAAE,CAACC,MAAM,EAAEC,MAAM,CAAC;EAC5BC,SAAS,EAAE,CAACF,MAAM,EAAEC,MAAM;AAC5B,CAAC,EAAE,OAAO,CAAC;AAEX,OAAO,SAASE,QAAQA,CAAEC,KAAiB,EAAEC,EAA6B,EAAE;EAC1E,IAAIC,UAAwB,GAAGA,CAAA,KAAM,CAAC,CAAC;EAEvC,SAASC,QAAQA,CAAEC,SAAkB,EAAE;IACrCF,UAAU,GAAG,CAAC;IAEd,MAAMG,KAAK,GAAGT,MAAM,CAACQ,SAAS,GAAGJ,KAAK,CAACF,SAAS,GAAGE,KAAK,CAACL,UAAU,CAAC;IAEpE,OAAO,IAAIW,OAAO,CAACC,OAAO,IAAI;MAC5BL,UAAU,GAAGV,KAAK,CAACa,KAAK,EAAE,MAAM;QAC9BJ,EAAE,GAAGG,SAAS,CAAC;QACfG,OAAO,CAACH,SAAS,CAAC;MACpB,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ;EAEA,SAASI,YAAYA,CAAA,EAAI;IACvB,OAAOL,QAAQ,CAAC,IAAI,CAAC;EACvB;EAEA,SAASM,aAAaA,CAAA,EAAI;IACxB,OAAON,QAAQ,CAAC,KAAK,CAAC;EACxB;EAEA,OAAO;IACLD,UAAU;IACVM,YAAY;IACZC;EACF,CAAC;AACH"}