{"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","ignoreList":[]}