{"version":3,"file":"toggleScope.mjs","names":["effectScope","onScopeDispose","watch","useToggleScope","source","fn","scope","start","run","length","_scope","stop","active","_scope2","undefined","immediate","_scope3"],"sources":["../../src/composables/toggleScope.ts"],"sourcesContent":["// Utilities\nimport { effectScope, onScopeDispose, watch } from 'vue'\n\n// Types\nimport type { EffectScope, WatchSource } from 'vue'\n\nexport function useToggleScope(\n  source: WatchSource<boolean>,\n  fn: (reset: () => void) => void\n) {\n  let scope: EffectScope | undefined\n  function start() {\n    scope = effectScope()\n    scope.run(() =>\n      fn.length\n        ? fn(() => {\n            scope?.stop()\n            start()\n          })\n        : (fn as any)()\n    )\n  }\n\n  watch(\n    source,\n    (active) => {\n      if (active && !scope) {\n        start()\n      } else if (!active) {\n        scope?.stop()\n        scope = undefined\n      }\n    },\n    { immediate: true }\n  )\n\n  onScopeDispose(() => {\n    scope?.stop()\n  })\n}\n"],"mappings":"AAAA;AACA,SAASA,WAAW,EAAEC,cAAc,EAAEC,KAAK,QAAQ,KAAK;;AAExD;;AAGA,OAAO,SAASC,cAAcA,CAC5BC,MAA4B,EAC5BC,EAA+B,EAC/B;EACA,IAAIC,KAA8B;EAClC,SAASC,KAAKA,CAAA,EAAG;IACfD,KAAK,GAAGN,WAAW,CAAC,CAAC;IACrBM,KAAK,CAACE,GAAG,CAAC;MAAA,OACRH,EAAE,CAACI,MAAM,GACLJ,EAAE,CAAC,YAAM;QAAA,IAAAK,MAAA;QACP,CAAAA,MAAA,GAAAJ,KAAK,qBAALI,MAAA,CAAOC,IAAI,CAAC,CAAC;QACbJ,KAAK,CAAC,CAAC;MACT,CAAC,CAAC,GACDF,EAAE,CAAS,CAAC;IAAA,CACnB,CAAC;EACH;EAEAH,KAAK,CACHE,MAAM,EACN,UAACQ,MAAM,EAAK;IACV,IAAIA,MAAM,IAAI,CAACN,KAAK,EAAE;MACpBC,KAAK,CAAC,CAAC;IACT,CAAC,MAAM,IAAI,CAACK,MAAM,EAAE;MAAA,IAAAC,OAAA;MAClB,CAAAA,OAAA,GAAAP,KAAK,qBAALO,OAAA,CAAOF,IAAI,CAAC,CAAC;MACbL,KAAK,GAAGQ,SAAS;IACnB;EACF,CAAC,EACD;IAAEC,SAAS,EAAE;EAAK,CACpB,CAAC;EAEDd,cAAc,CAAC,YAAM;IAAA,IAAAe,OAAA;IACnB,CAAAA,OAAA,GAAAV,KAAK,qBAALU,OAAA,CAAOL,IAAI,CAAC,CAAC;EACf,CAAC,CAAC;AACJ"}